String Intern API doc

时间:2014-03-26 19:49:16

标签: java string

java.lang.String.intern() API doc说

  

否则,将此String对象添加到池中,并返回对此String对象的引用。

它告诉我,如果String对象不在池中,它会将相同的String对象添加到池中。 所以在下面的代码中,为什么输出不是true

String s1 = new String("abc");
String s2 = s1.intern();
System.out.println(s1 == s2);

2 个答案:

答案 0 :(得分:7)

所有字符串文字都会自动实习。 因此,s1.intern()会从"abc"返回已经实例化的实例,而不是s1

要创建一个没有实习的字符串,您可以编写new String("a") + "bc"

答案 1 :(得分:3)

因为"abc"已经存在于字符串池中:当您引用字符串常量String以将其复制到此新"abc"时,它已添加到String池中}。