Java中==和equals()之间有什么区别?

Java中==和equals()之间有什么区别?

我想澄清一下我是否理解正确:

  • == - >是参考比较,即两个对象都指向相同的内存位置

  • .equals() - >计算对象中值的比较

我的理解是正确的吗?



犯罪嫌疑人X
浏览 1534回答 4
4回答

www说

一般来说,你的问题的答案是“是”,但.......equals(...) 只会比较它所写的比较,不多也不少。如果一个类没有覆盖equals方法,那么它默认为equals(Object o)覆盖此方法的最近父类的方法。如果没有父类提供覆盖,那么它默认为最终父类Object的方法,因此您将使用该Object#equals(Object o)方法。根据Object API,它与==; 也就是说,当且仅当两个变量引用同一个对象时,如果它们的引用是同一个,它才返回true 。因此,您将测试对象相等性而不是功能相等性。hashCode如果你改写equals,总是记得覆盖,以免“违反合同”。根据API,如果hashCode()两个对象的方法表明它们是等价的,那么从两个对象的方法返回的结果必须相同equals。反过来并不一定是真的。

皈依舞

关于String类:equals()方法比较String实例(在堆上)中的“值”,而不管两个对象引用是否引用相同的String实例。如果任何两个String类型的对象引用引用相同的String实例那么太棒了!如果两个对象引用引用两个不同的String实例,则它没有区别。它是正在比较的每个String实例中的“值”(即:字符数组的内容)。另一方面,“==” 运算符比较两个对象引用的值,以查看它们是否引用相同的String实例。如果两个对象引用的值“引用”相同的String实例,则布尔表达式的结果将为“true”.. duh。另一方面,如果两个对象引用的值“引用” 不同的String实例(即使两个String实例具有相同的“值”,也就是说,每个String实例的字符数组的内容都相同)布尔表达式的结果将为“false”。与任何解释一样,让它沉入其中。我希望这可以解决一些问题。
打开App,查看更多内容
随时随地看视频慕课网APP