자바의 String pool이 무엇이죠?

조회수 1379회

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

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

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값이 이미 정의되어있는지 체크한다는 개념에서 유래한 것입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)