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 都为字符串常量池中对象 引用地址相同