자바에서는 문자열을 위한 String이라는 클래스를 별도로 제공합니다.
문자열이란 다음처럼 문자로 구성된 문장을 뜻합니다.
"Happy Java" "a" "123"
문자열을 표현할 때는 가급적이면 첫 번째 방식, 즉 리터럴(literal) 표기 방식을 사용하는 것이 좋다.
String a = "Happy java" 이것이 리터럴 표기방식인데 고정된 값을 그대로 대입하는 방법을 말한다
자바에서 String은 클래스이기때문에 자바의 기본 자료형에 속하지 않는다.
String 의 특징은
- 불변성 : 자바에서 String은 불변하는 특징이 있다
- 객체 : String은 객체이다
String은 불변
String 객체의 값은 변경할 수 없다.
불변으로 설계된 이유
- JVM(자바 가상 머신)에서는 따로 String Constatnt Poll 이라는 독립적인 영역을 만들고 문자열들을 Constant화 하여 다른 변수 혹은 객체들과 공유하게 되는데 외 과정에서 데이터 캐싱이 일어나고 그만큼 성능적 이득을 취할 수 있기 때문입니다.
- 데이터가 불변하다면 Multi-Thread 환경에서 동기화 문제가 발생하지 않기때문에 더욱 safe한 결과를 낼 수 있기 때문입니다.
- 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 |