Java 버전 1.6에서는 출력이 false true
이지만 버전 1.8에서는 출력이 true true
으로 변경되었습니다.인턴 메소드 개념 혼동이 다른 버전으로 변경됨
왜 이런 일이 발생했는지 설명 할 수 있습니까?
인턴 메서드는 힙에서 생성 된 개체의 해당 문자열 상수 풀을 참조하는 데 사용되며 개체가 없으면 문자열 상수 풀을 만듭니다. 제 이해가 잘못되면 저를 시정하십시오.
public class Intern_String2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String s1 = new String("durga"); //object created in heap
String s2 = s1.concat("software");
//object durga software created in heap at runtime
String s3 = s2.intern();
// create durga software object in string constant pool as none exist.
System.out.println(s2==s3);//should be false but print true in 1.8 version.
String s4 = "durgasoftware";
System.out.println(s3==s4);//prints true in both version..
}
여기서 설명하는 내용은 질문의 프로그램 출력을 변경하지 않습니다. – user2357112
@ user2357112 : Java 8 : 첫 번째 문자열이 문자열 풀에 들어 왔으며 인턴이이 동일한 문자열 풀 항목을 돌려 보냈습니다. Carlitos는 정확합니다. 인턴은 더 이상 특별한 것이 아니라 실제로 불필요합니다. –