문자열 리터럴
String X = "123";
X = "0"+X; 의 연산
- 문자열 리터럴 저장:
- "123"과 "0"은 모두 자바의 String Pool (문자열 상수 풀)에 저장.
- 이 풀은 힙 메모리 내의 특별한 공간으로, 동일한 문자열 리터럴이 여러 번 등장해도 한 번만 저장되고 여러 참조가 그 객체를 가리킴
- 문자열 연결(Concatenation):
- 자바의 String은 immutable (불변)이기 때문에 기존 객체를 수정하지 않고 항상 새로운 객체를 생성
- 참조 변경:
- X 변수는 이제 "0123"이라는 새로운 String 객체를 가리킴.
- 이전에 X가 참조하던 "123" 객체는 더 이상 X와 연결되어 있지 않음.
- String Pool과 새 객체:
- 만약 "0123"이라는 리터럴이 코드 어딘가에 이미 존재했다면, X는 그 String Pool의 객체를 참조
- 그렇지 않다면, "0123"이 새로 생성되어 힙에 저장되고, 필요하다면 String Pool에도 추가.