2014-03-26 7 views
1

java.lang.String.intern() API의 문서는문자열 인턴 API의 문서

그렇지 않으면,이 String 객체가 풀에 추가되어이 String 객체에 대한 참조가 반환됩니다 말한다. String 객체가 풀에없는 경우

그것은 알 수

, 그것은 풀에 같은 String 객체을 추가합니다. 아래의 코드에서 출력이 true이 아닌 이유는 무엇입니까? "abc" 문자열 풀에 이미 있기 때문에

String s1 = new String("abc"); 
String s2 = s1.intern(); 
System.out.println(s1 == s2); 

답변

7

모든 문자열 리터럴은 자동으로 수용됩니다. 따라서 s1.intern()은 이미 보유 된 인스턴스를 "abc"에서 반환하며 이는 s1이 아닙니다.

문자열을 사용하지 않고 문자열을 만들려면 new String("a") + "bc"을 쓸 수 있습니다.

+0

'문자열 s1 = 새로운 문자열 ("a") + "bc"; String s2 = s1.intern(); System.out.println (s1 == s2);'또한 false를 반환합니다. 여기에 어떤 물체가 웅덩이에 갔습니까? – Sangeeth

+0

@Sangeeth :''abc ''는 소스의 어느 곳에 나 나타 납니까? – SLaks

+0

's1'은 값이 ""abc "'인 객체를 참조합니다. 's1.intern()'은 같은 객체를 풀에 추가해야합니다. 권리? – Sangeeth

3

:이 새로운 String에 복사 할 "abc" 문자열 상수라고 할 때 그것은 String 풀에 추가되었다.