Java 中的 == 和 equals() 有什么区别?
2022-08-31 04:06:11
我想澄清一下我是否正确地理解了这一点:
-
==
是参考比较,即两个对象都指向相同的内存位置 -
.equals()
计算对象中值的比较
我想澄清一下我是否正确地理解了这一点:
==
是参考比较,即两个对象都指向相同的内存位置.equals()
计算对象中值的比较一般来说,你的问题的答案是“是的”,但是...
.equals(...)
只会比较它所写的内容来比较,不多也不少。equals(Object o)
Object#equals(Object o)
==
hashCode
equals
hashCode()
equals
关于 String 类:
equals() 方法比较 String 实例(堆上)内的“值”,而不考虑两个对象引用是否引用同一个 String 实例。如果任何两个 String 类型的对象引用引用相同的 String 实例,那就太好了!如果两个对象引用引用两个不同的 String 实例。这没有什么区别。它是正在比较的每个 String 实例内的“值”(即:字符数组的内容)。
另一方面,“==”运算符比较两个对象引用的值,以查看它们是否引用同一 String 实例。如果两个对象的值都引用“引用”同一个 String 实例,则布尔表达式的结果将为“true”。嘟嘟。另一方面,如果两个对象引用的值“引用”不同的 String 实例(即使两个 String 实例具有相同的“值”,即每个 String 实例的字符数组的内容相同),则布尔表达式的结果将为“false”。
与任何解释一样,让它沉浸其中。
我希望这能把事情弄清楚一点。