자바의 String pool이 무엇이죠?


이 질문은 아래 링크에 이미 답변이 된 적이 있습니다:

자바의 StringPool 때문에 혼란스럽네요. 자바의 String 챕터를 읽는 도중에 StringPool을 알게되었고요. 제가 알아 들을 수 있게 쉬운 말로 이해시켜주세요. StringPool이 실제로 어떤 일을 하죠?

  • 2016년 07월 08일에 작성됨

조회수 87


1 답변


좋아요
0
싫어요
채택취소하기

아래 코드는 true를 print합니다(비록 equals메소드를 사용하지 않았더라도 string을 비교하는데 정확한 방법입니다).

String s = "a" + "bc";
String t = "ab" + "c";
System.out.println(s == t);

컴파일러가 string문자열을 최적화할 때, s와 t모두 같은 값을 가진 것으로 판단하고 하나의 string 오브젝트만 가지도록 합니다. 자바에서 String은 값이 변하지 않기 때문에 이 방법이 안전하죠. 결과적으로 s와 t는 같은 오브젝트를 가리키게 되고 메모리는 절약됩니다.

‘string pool’이라는 이름은 미리 정의된 모든 string이 ‘pool’에 저장되며 새로운 String 오브젝트를 생성하기 전에 컴파일러가 동일한 string값이 이미 정의되어있는지 체크한다는 개념에서 유래한 것입니다.

  • 2016년 07월 09일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close