java.lang.String.intern() API doc说
否则,将此字符串对象添加到池中,并返回对此字符串对象的引用。
它告诉我们,如果字符串对象不在池中,它将将相同的字符串对象添加到池中。所以在下面的代码中,为什么输出不是true
String s1 = new String("abc");
String s2 = s1.intern();
System.out.println(s1 == s2);发布于 2014-03-26 19:52:03
所有字符串文本都会自动内嵌。因此,s1.intern()从"abc"返回已经实习生的实例,而不是s1。
要创建一个字符串而不需要实习,您可以编写new String("a") + "bc"。
发布于 2014-03-26 19:51:37
因为"abc"已经在字符串池中:当您引用字符串常量"abc"将其复制到这个新的String时,它被添加到了String池中。
https://stackoverflow.com/questions/22671595
复制相似问题