源代码
public static void main(String[] args) {
String s = new String("1");
String s2 = "1";
s.intern();
System.out.println(s == s2);
String s3 = new String("1") + new String("1");
String s4 = "11";
s3.intern();
System.out.println(s3 == s4);
}
第一段:
新建两个对象,一个在堆,一个在字符串常量池。s1指向堆中的对象
s2指向字符串中值为1的对象,s.intern()不做任何操作。s和s2指向不同,返回false
第二段:
新建一个对象1在堆,对象11在堆,s3指向堆中的11
s4发现字符串常量池无11,新建11返回引用
s3.intern()不作操作
s3和s4的指向不同,返回false