-2
이전에 두 문자열 비교에 관한 질문을했고 항상 .equals를 사용해야한다고 들었습니다. 이 사실이 인쇄됩니다문자열 비교를 위해 ==가 true를 반환하는 이유는 무엇입니까?
String y= "Mary";
String x= "Mary";
System.out.print(x==y);
, 난 왜 이해가 안 :
그러나,이 후 작동 이유를 이해하지 않습니다.
이전에 두 문자열 비교에 관한 질문을했고 항상 .equals를 사용해야한다고 들었습니다. 이 사실이 인쇄됩니다문자열 비교를 위해 ==가 true를 반환하는 이유는 무엇입니까?
String y= "Mary";
String x= "Mary";
System.out.print(x==y);
, 난 왜 이해가 안 :
그러나,이 후 작동 이유를 이해하지 않습니다.
두 개의 String은 동일한 참조 ID를 가지며 이는 String intern 풀에서 왔기 때문입니다. 당신과 같이, 그들 중 하나에 new String()
를 추가한다면 -
String y= "Mary";
String x= new String("Mary");
System.out.print(x==y);
당신은 false
을 얻을 것입니다.
이유가 무엇입니까?. 이 답변에 어떤 문제가 있습니까? – TheLostMind
왜냐하면'y'와'x'는 모두 * String constant pool *에서 같은 객체를 가리키고 있기 때문입니다. – TheLostMind
이것은 컴파일러와 JVM의 구현 세부 사항입니다. –
* "컴파일러와 JVM의 구현 세부 사항"* - 실제로는 Java 사양에서 필요합니다. 구현 세부 사항이 아닙니다. –