gpt4 book ai didi

java - Java 中 == 和 equals() 有什么区别?

转载 作者:行者123 更新时间:2023-12-01 22:34:48 25 4
gpt4 key购买 nike

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

  • == 是引用比较,即两个对象都指向相同的内存位置
  • .equals() 计算对象中值的比较

最佳答案

一般来说,您的问题的答案是"is",但是......

  • .equals(...) 只会比较它所写的内容,不多也不少。
  • 如果类没有重写 equals 方法,则它默认使用已重写此方法的最近父类的 equals(Object o) 方法。
  • 如果没有父类提供重写,则默认使用最终父类 Object 中的方法,因此您只剩下 Object#equals(Object o) 方法。根据对象 API,这与 == 相同;也就是说,当且仅当两个变量引用同一个对象(且它们的引用相同)时,它才返回 true。因此,您将测试对象相等,而不是功能相等
  • 如果您覆盖 equals,请务必记住覆盖 hashCode,以免“违反契约(Contract)”。根据 API,如果两个对象的 equals 方法显示它们是相同的,则从两个对象的 hashCode() 方法返回的结果必须相同相等的。反之则不一定成立。

关于java - Java 中 == 和 equals() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58532461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com