当前位置: 首页 > news >正文

Objects.equals() 和 Object.equals() 的区别:

1. Objects.equals() 是静态方法

✅ 正确写法Objects.equals(a, b)

  • 来自 java.util.Objects 工具类(注意是 Objects,带s

  • 是 静态方法,直接用类名调用

  • 作用:安全比较两个对象是否相等(包括处理null值)

    import java.util.Objects;
    
    Objects.equals(name, user.name);  // 正确用法

 

优势:
  • 如果 name 或 user.name 为 null,不会抛 NullPointerException

  • 等价于:

(name == user.name) || (name != null && name.equals(user.name))

2. Object.equals() 是实例方法

❌ 错误写法Object.equals(a, b)

  • 来自 java.lang.Object 基类(没有s

  • 是 实例方法,必须用对象实例调用:

name.equals(user.name);  // 可能抛NullPointerException
风险:
  • 如果 name 为 null,会抛出 NullPointerException


关键区别:

特性Objects.equals()Object.equals()
所属类java.util.Objectsjava.lang.Object
方法类型静态方法实例方法
null 安全性✅ 安全❌ 可能抛异常
调用方式Objects.equals(a,b)a.equals(b)

为什么设计成两个?

  1. 历史原因

    • Object.equals() 是Java最初的设计

    • Objects.equals() 是Java 7新增的,专门解决null安全问题

  2. 使用场景

    • 当你 控制对象不为null 时可以用 objectA.equals(objectB)

    • 当可能为null时,必须用 Objects.equals(a, b)


示例对比

String a = null;
String b = "hello";

// 危险写法(会抛异常)
a.equals(b);  // ❌ NullPointerException

// 安全写法
Objects.equals(a, b);  // ✅ 返回 false

 建议在重写 equals() 时,一律使用 Objects.equals() 来比较字段,这是最安全的做法。

 

 

相关文章:

  • 信号处理中的窗
  • 《Python实战进阶》第30集:Scikit-learn 入门:分类与回归模型
  • Pytest的参数化测试
  • Xamarin.Android实现本地化部署DeepSeek的对话功能
  • 【docker】安装SQLServer
  • DrRacket是一款专为Scheme和Racket编程语言设计的集成开发环境(IDE)
  • 重温Docker 构建
  • 3110. 字符串的分数
  • java版嘎嘎快充玉阳软件互联互通中电联云快充协议充电桩铁塔协议汽车单车一体充电系统源码uniapp
  • Thinkphp(TP)漏洞攻略
  • python基础语法中的内置函数与拆包
  • 我的创作纪念日暨六年编程路的回顾
  • Select多路转接
  • 深入理解 Bitmap 索引:原理、场景与应用案例
  • ccf2202邻域均值
  • PostgreSQL并行化内容
  • API接口文档(人力资源管理系统)
  • 给网站配置https访问
  • JVM(基础篇)
  • gitlab将其他分支设置为master分支
  • 5名中国公民在美国交通事故中遇难
  • 力保夏粮丰收,粮食大省江苏多地党政主官到田间察看小麦长势
  • 挑大梁!一季度北上广等7省份进出口占外贸总值四分之三
  • 韩国前国务总理韩德洙正式宣布参加总统选举
  • 取消了“仅退款”,商家就可以高枕无忧了吗?
  • 永辉超市回应顾客结算时被“反向抹零”:整改并补偿