You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何重写Java的equals()方法时要先判断this == o?

重写equals()时先判断this == o的原因

先看你给出的这段重写的equals代码:

@Override
public boolean equals(Object o){
    if(this == o)
        return true; 
    if(!(o instanceof Menu))
       return false;
   Menu menu = (Menu)o; 
   return price == menu.price &&
          Objects.equals(name,menu.name); 
}

大家重写equals时先加this == o的判断,主要有这几个原因:

  • 性能优先:如果两个对象是同一个内存引用,那它们的所有字段必然完全一致,直接返回true可以跳过后续的类型校验、字段比对等操作,尤其是对象包含大量字段或者字段比对(比如字符串、复杂对象)比较耗时的时候,能显著提升方法执行效率。
  • 避免无意义操作:当this == o成立时,后续的类型转换、字段比较都是多余的,提前终止方法能减少不必要的代码执行流程。
  • 满足equals的通用约定:Java规范里明确要求equals方法必须满足自反性——即任何非null的对象x,x.equals(x)必须返回true。先判断this == o就是最直接、高效地满足这条约定的方式。

内容的提问来源于stack exchange,提问作者정지은

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 15:02:03