Java字符串比较

3

迄今为止,我在程序中一直使用==运算符来比较所有的字符串。然而,我遇到了一个错误,将其中一个字符串改为使用equals()后,问题得到了解决。

==有什么不好?它应该在什么时候使用,在什么情况下不应该使用?它们之间有什么区别?


通常情况下,使用“==”来比较字符串是很糟糕的,因为它会比较对象而不是对象的内容。 - Bathsheba
你应该阅读这篇文章。http://www.thejavageek.com/2013/07/27/string-comparison-with-equals-and-assignment-operator/ - Prasad Kharkar
你刚才是从这个问题复制了文本吗?为什么? - Jesper
3个回答

3
这实际上是一个有趣的问题。这里稍作修改: “我一直在我的程序中使用 * 运算符来添加我所有的数字。然而,我遇到了一个错误,将其中一个数字改为 +,它就解决了。”

*是不好吗?

答案:完全没有问题!只是它不会把数字相加,尽管你在测试2*2时可能没有注意到这一点。

1

是的,使用 == 是不好的。如果你使用 == 比较对象,它会比较这些对象是否相同,而不是相等

对于字符串来说,你很幸运,因为大多数情况下,相等的字符串实际上引用的是同一个对象,但这并非总是如此。

请参阅此帖子Java中如何比较字符串?以获取示例。


1

==操作符用于检查运算符左右操作数的引用是否相等,而equals方法用于检查两个对象的值是否相等。

在处理字符串时,建议尽可能使用equals方法,因为字符串拥有对象池,因此如果使用==操作符比较两个字符串,即使内容相同,也会由于引用不同而返回false。但是equal方法会返回true。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接