이미 말한 것 외에도 Java에서 문자열 리터럴 [즉, 유사 "abcd"
하지만 유사 하지 않은 문자열 new String("abcd")
]이 인턴됩니다. 즉, "abcd"를 참조 할 때마다 String
새 인스턴스가 아닌 단일 인스턴스에 대한 참조를 얻게됩니다. 매번. 따라서 다음을 갖게됩니다.
String a = "abcd";
String b = "abcd";
a == b; //True
하지만 만약 당신이
String a = new String("abcd");
String b = new String("abcd");
그런 다음 가질 수 있습니다
a == b; // False
(그리고 누군가가 상기시킬 필요가있는 경우 항상 .equals()
문자열을 비교 하는 데 사용하십시오 ==
. 물리적 동등성 테스트).
Interning String 리터럴은 종종 두 번 이상 사용되기 때문에 좋습니다. 예를 들어 (기인 된) 코드를 고려하십시오.
for (int i = 0; i < 10; i++) {
System.out.println("Next iteration");
}
문자열의 인턴이 없다면 "Next iteration"은 10 번 인스턴스화되어야하지만 지금은 한 번만 인스턴스화됩니다.