//intern() 方法返回值:
//一个字符串,内容与此字符串相同,但一定取自具有唯一字符串的池。
//new的字符串和变量不会进入常量池
String str1 = "a";
String str2 = "b";
String str3 = "ab";//放在常量池
String str4 = str1 + str2;//不在常量池
String str5 = new String("ab");//引用变量,指向new String
System.out.println(str5.equals(str3));//内容相等,hashCode相等,true
System.out.println(str5 == str3);//引用并不相等,false
System.out.println(str5.intern() == str3);//调用intern后去常量池中找“ab”,str3指向的"ab"就在常量池,所以true
System.out.println(str5.intern() == str4);//str4指向不在常量池,在他自己的空间地址,所以false
String a = new String("ab");//不在常量池
String b = new String("ab");//不在
String c = "ab";//在
String d = "a" + "b";//在
String e = "b";//在
String f = "a" + e;//有变量,不在
System.out.println(b.intern() == a);//false
System.out.println(b.intern() == c);//true
System.out.println(b.intern() == d);//true
System.out.println(b.intern() == f);//false
System.out.println(b.intern() == a.intern());//true