public String intern()

此方法会检查字符串常量池中是否已存在与此String对象内容相同的字符串,如果存在就返回字符串常量池中字符串的引用,否则将此字符串加入到字符串常量池中,再返回字符串常量池中字符串的引用

String str = "ab";
String str1 = new String("ab");
System.out.println(str1.intern() == str);//true

String str2 = new String("bc");
String addr = str2.intern();
System.out.println(addr == str2);//false 说明返回的是加入到常量池中
//的字符串的引用,和原来不同
String str3 = "bc";
System.out.println(addr == str3);//true