Java

[Java] String

boudle 2024. 8. 16. 21:15

자바에서는 문자열을 위한 String이라는 클래스를 별도로 제공합니다.

문자열이란 다음처럼 문자로 구성된 문장을 뜻합니다.

"Happy Java" "a" "123"

 

문자열을 표현할 때는 가급적이면 첫 번째 방식, 즉 리터럴(literal) 표기 방식을 사용하는 것이 좋다.

String a = "Happy java"  이것이 리터럴 표기방식인데  고정된 값을 그대로 대입하는 방법을 말한다

 

자바에서 String은 클래스이기때문에 자바의 기본 자료형에 속하지 않는다.

 

String 의 특징은

 

  1. 불변성 : 자바에서 String은 불변하는 특징이 있다
  2. 객체 : String은 객체이다 

String은 불변

 

String 객체의 값은 변경할 수 없다.

불변으로 설계된 이유

  1.  JVM(자바 가상 머신)에서는 따로 String Constatnt Poll 이라는 독립적인 영역을 만들고 문자열들을 Constant화 하여 다른 변수 혹은 객체들과 공유하게 되는데 외 과정에서 데이터 캐싱이 일어나고 그만큼 성능적 이득을 취할 수 있기 때문입니다.
  2. 데이터가 불변하다면 Multi-Thread 환경에서 동기화 문제가 발생하지 않기때문에 더욱 safe한 결과를 낼 수 있기 때문입니다.
  3. String은 민감한 정보를 저장하기위해 많이 사용되기 때문입니다. 1)네트워크 연결 시 Host,Port 등의 정보2)파일 및 디렉터리 경로 등의 정보3) Database와의 연결에 필요한 URL등 민감한 정보 즉 문자열이 변경하다면 문자열의 무결성 검사 이후에 값이 변경될 수 있습니다 .이렇게 변경 가능한 문자열은 SQL 주입에 취약해지는 등 시간이 지남에 따라 보안에 위험이 생길 수 있기 때문입니다.

 

 

String은 객체이다.

자바(java)프로그래밍에서 String은 int와 char와 달리 기본형이 아닌 참조형변수로 분류된다.

즉 스택(stack)영역이 아닌 객체와 같이 힙(heap)에서 문자열 데이터가생성된다.

'Java' 카테고리의 다른 글

[Java] StringBuilder  (0) 2024.08.19
[Java] 문자열 내장 메서드  (0) 2024.08.16
[Java] 방어적 복사  (0) 2024.07.25
[Java] 동일성(Identity)과 동등성(Equality)  (1) 2024.07.25
자바 생성자  (0) 2024.07.22