string.intern()
intern() 返回字符串规范化格式(字符串常量池中的引用)
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 b.insern()是字符串常量池中的引用地址 ,a 是对象引用地址
System.out.println(b.intern() == c);
true 都是字符串常量池中的引用地址
System.out.println(b.intern() == d);
true 两个字符串相加 会去字符串常量池查找有无此对象,有直接引用,没有就放入后引用
System.out.println(b.intern() == f);
false 字符串相加的时候,都是静态字符串的结果会添加到字符串池,如果其中含有变量(如f中的e)则不会进入字符串池中 所以地址不同 返回false
System.out.println(b.intern() == a.intern());
true 都为字符串常量池中对象 引用地址相同









