加载定义
StringJava字符串中代表字符串文字的对象
String的类时,它们将被添加到共享池中。这样可以确保String文字的所有“副本”实际上是同一对象……即使该文字出现在多个类中。这就是为什么
s3== s4是
true。
相反,当您
new使用String时,会创建一个不同的新String对象。这就是为什么
s1 ==s2是
false。(这是的基本属性
new。如果正常完成,则可以保证创建并返回一个新对象。)
但是,无论哪种情况,字符串都将具有相同的字符,这就是为什么
equals要返回
true。
尽管了解发生了什么很重要,但 真正的 教训是,比较Java字符串的 正确 方法是使用
equals而不是
==。
如果您希望使用来测试String对象的相等性
==,则可以使用
String.intern方法“实习”它们。但是,您必须始终如一地进行此操作……并且在各个方面进行实习都是一个昂贵的过程……因此通常不是一个好主意。



