2014-09-22 2 views
-2

이전에 두 문자열 비교에 관한 질문을했고 항상 .equals를 사용해야한다고 들었습니다. 이 사실이 인쇄됩니다문자열 비교를 위해 ==가 true를 반환하는 이유는 무엇입니까?

String y= "Mary"; 
String x= "Mary"; 
System.out.print(x==y); 

, 난 왜 이해가 안 :

그러나,이 후 작동 이유를 이해하지 않습니다.

+2

왜냐하면'y'와'x'는 모두 * String constant pool *에서 같은 객체를 가리키고 있기 때문입니다. – TheLostMind

+0

이것은 컴파일러와 JVM의 구현 세부 사항입니다. –

+3

* "컴파일러와 JVM의 구현 세부 사항"* - 실제로는 Java 사양에서 필요합니다. 구현 세부 사항이 아닙니다. –

답변

2

두 개의 String은 동일한 참조 ID를 가지며 이는 String intern 풀에서 왔기 때문입니다. 당신과 같이, 그들 중 하나에 new String()를 추가한다면 -

String y= "Mary"; 
String x= new String("Mary"); 
System.out.print(x==y); 

당신은 false을 얻을 것입니다.

+2

이유가 무엇입니까?. 이 답변에 어떤 문제가 있습니까? – TheLostMind

관련 문제