String replace(),使用'=='返回值比较

时间:2013-05-03 20:38:33

标签: java return-value equals-operator

System.out.print("a".replace('a','1')=="a".replace('a','1'));

预期

true,因为replace()返回String并且可以与==进行字符串比较。 但上面的代码打印false。解释

2 个答案:

答案 0 :(得分:4)

==检查它们是否是内存中的同一对象,因此位于同一位置。

由于这些是恰好具有相同内容的两个不同字符串,因此您需要与.equals进行比较,后者比较不参考的值。

答案 1 :(得分:1)

不,不建议使用==进行字符串比较。在某些情况下,例如:

new String("test") == new String("test")

它返回false。

所有这一切都是因为理论上Java应该在字符串池中搜索某些字符串,但实际上有些操作会返回新对象而不是驻留在字符串池中的对象。

始终使用“equals”方法代替== !!

非常重要