我想用几行代码来说明Java中要比较两个字符串(String),必须使用equals()而不是operator ==。
String
equals()
==
这是我尝试过的东西:
public static void main(String Args[]) { String s1 = "Hello"; String s2 = "Hello"; if (s1 == s2) System.out.println("same strings"); else System.out.println("different strings"); }
我期待的输出是:different strings,因为在测试中,s1 == s2我实际上是在比较两个引用(即地址)而不是对象的内容。
different strings
s1 == s2
但事实上,我这样的输出:same strings!
same strings
浏览我发现,一些Java实现将优化上述代码,以便在互联网s1和s2 将 实际引用相同的字符串。
s1
s2
好吧,==当在Java中比较字符串(或对象)时,如何使用运算符演示问题?
编译器做了一些优化,你的情况,以便s1和s2真的是同一个对象。您可以使用解决此问题
String s1 = new String( "Hello" ); String s2 = new String( "Hello" );
然后,您将拥有两个具有相同文本内容的不同对象。