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