-1

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

true预期为 replace() 返回 String 并且可以使用==. 但是上面的代码打印出来false。解释?

4

2 回答 2

4

==检查它们是否是内存中的同一个对象,所以在同一个位置。

由于这些是两个不同的字符串,它们恰好具有相同的内容,因此您需要比较.equals哪些比较值未引用。

于 2013-05-03T20:40:05.527 回答
1

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

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

它返回假。

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

始终使用“等于”方法而不是 == 非常重要!!

于 2013-05-03T20:39:47.757 回答