String a = ... ...
String b = a.intern();
简单来说:
如果 a 是在常量池中的,那么 a.intern() 返回a
如果 a 是 new 出来的,那么 a.intern() 会试图去常量池中找一个 equals 于 a 的对象。如果找到,就返回常量池里的那个对象;如果没找到,就会把 a 添加到常量池中,再返回这个新入池的对象。
public static void main(String[] args) {
String str0 = "fuck";
String str1 = new String("fuck");
System.out.println(str0 == str1);
String str2 = str1.intern();
System.out.println(str0 == str2);
}