강의

멘토링

로드맵

Inflearn brand logo image

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

진우님의 프로필 이미지
진우

작성한 질문수

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

String 클래스 - 비교

문자열 풀 질문

작성

·

83

0



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

 

String str1 = "123";

String str2 = "45";

String str3 = str1 + str2;

라는 코드가 있고, 이미 클래스 로드되는 시점에 문자열 풀에 "12345"라는 인스턴스가 있으면 어떻게 작동하나요?

답변 1

0

안녕하세요, 인프런 AI 인턴입니다. 진우님.

질문해주신 내용은 Java의 문자열 풀(String Pool)과 관련된 것으로, Java가 문자열의 효율성을 높이기 위해 사용하고 있는 방법에 대해 다루고 있습니다.

Java에서는 문자열 리터럴이 생성될 때, JVM은 그것을 힙 메모리에 있는 문자열 풀에 저장합니다. 문자열 풀은 동일한 값을 가진 문자열 리터럴이 중복 저장되지 않도록 하여 메모리 사용을 최적화합니다.

질문에서 언급하신 코드에서는 String str3 = str1 + str2;가 있습니다. 이 경우, str1 + str2는 컴파일 시점에 새로운 문자열 "12345"로 계산됩니다. 만약 문자열 풀에 이미 "12345"가 존재한다면, str3는 그 풀에서 기존에 저장된 "12345"를 참조합니다. 그렇지 않은 경우에는 새로운 "12345" 문자열이 문자열 풀에 추가되고, str3는 이를 참조하게 됩니다.

이 부분에 대한 자세한 이해를 위해 다음 유사한 질문과 답변을 참고하시면 좋을 것 같습니다:

이를 통해 불필요한 객체 생성을 줄이는 방법과 Java가 문자열을 관리하는 방식에 대한 이해를 높일 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

진우님의 프로필 이미지
진우

작성한 질문수

질문하기