System.out.print("a".replace('a','1')=="a".replace('a','1'));
true
,因为replace()返回String并且可以与==
进行字符串比较。
但上面的代码打印false
。解释
答案 0 :(得分:4)
==
检查它们是否是内存中的同一对象,因此位于同一位置。
由于这些是恰好具有相同内容的两个不同字符串,因此您需要与.equals
进行比较,后者比较不参考的值。
答案 1 :(得分:1)
不,不建议使用==进行字符串比较。在某些情况下,例如:
new String("test") == new String("test")
它返回false。
所有这一切都是因为理论上Java应该在字符串池中搜索某些字符串,但实际上有些操作会返回新对象而不是驻留在字符串池中的对象。
始终使用“equals”方法代替== !!
非常重要