인프런 커뮤니티 질문&답변

backendman님의 프로필 이미지
backendman

작성한 질문수

김영한의 실전 자바 - 중급 1편

String 클래스 - 불변 객체

String 이 불변객체라고 하셨는데 궁금한게 있습니다.

작성

·

306

1

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
여기에 질문 내용을 남겨주세요.

캡처.PNG

위와 같이 a 를 hello 로 초기화했고 그 이후에 hello java 로 변경하니깐 변경이 됐습니다.

불변객체라고 하셔서 변경이 되지않을거라 생각했는데

변경이 되는걸 보고 의아했습니다.

 

근데 강의를 보니 값이 변경되면 새로운 객체를 생성한다고 하시던데 그럼 제일처음 a 를 생성했을땐 a에 x001 번지가 저장됐었다면 a 의 값을 hello java 로 변경했을땐 새로운 String 객체 메모리 주소를(x002) a 에 넣어주게 되는건가요?

답변 1

0

안녕하세요. ohmyfun님, 공식 서포터즈 OMG입니다.

네, 이해하신게 맞습니다 😀

새로운 문자열이 생성되면(hello jaja) 새로운 메모리주소가 할당 및 문자열 풀에 저장되고,

a는 hello jaja의 메모리 주소를 참조하게 됩니다.

 

a라는 문자열 주소를 참조하는 변수가 불변이 아니라,

'hello' 라는 문자열이 가리키는 내용(value) 자체가 불변이라고 이해하시면 될 것 같습니다 😀

image

감사합니다.

backendman님의 프로필 이미지
backendman

작성한 질문수

질문하기