首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >equals()方法与==运算符在对象比较上的区别

equals()方法与==运算符在对象比较上的区别

作者头像
用户1750537
发布2025-08-29 09:34:59
发布2025-08-29 09:34:59
6600
代码可运行
举报
运行总次数:0
代码可运行
equals方法与==运算符在对象比较上的区别

  • equals()方法和==运算符都可以用于对象比较,但它们有一些区别。

在这里插入图片描述
在这里插入图片描述

equals()方法和==运算符都可以用于对象比较,但它们有一些区别。

运算符比较的是两个对象的引用是否相等,即判断两个对象是否指向内存中的同一个地址。如果两个对象的引用相等,那么运算符返回true;否则返回false。例如:

代码语言:javascript
代码运行次数:0
运行
复制
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");

System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false

equals()方法比较的是对象的内容是否相等,即判断两个对象的值是否相等。equals()方法是Object类的方法,如果在子类中没有重写equals()方法,则默认继承Object类的equals()方法,这时equals()方法的行为与==运算符相同。但是,很多类(例如String、Integer等)都重写了equals()方法,使其具有比较内容的功能。例如:

代码语言:javascript
代码运行次数:0
运行
复制
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");

System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true

在上面的例子中,虽然str1和str2是不同的对象,但它们的内容相等,因此equals()方法返回true。

需要注意的是,如果自定义的类中没有重写equals()方法,默认会使用Object类中的equals()方法,该方法与==运算符的行为是相同的,即比较引用是否相等。如果需要比较对象的内容,就需要在自定义类中重写equals()方法。

代码语言:javascript
代码运行次数:0
运行
复制
public class Person {
  private String name;
  private int age;
  
  // 省略构造方法和其他方法
  
  @Override
  public boolean equals(Object obj) {
    if (this == obj) {
      return true;
    }
    
    if (obj == null || getClass() != obj.getClass()) {
      return false;
    }
    
    Person person = (Person) obj;
    return age == person.age && Objects.equals(name, person.name);
  }
}

在上面的代码中,我们在Person类中重写了equals()方法,比较了name和age两个属性的值是否相等。为了避免空指针异常,我们使用了Objects.equals()方法来比较name属性,该方法会首先判断两个参数是否为null,如果都为null则返回true,如果有一个为null则返回false,如果都不为null则调用name的equals()方法进行比较。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • equals方法与==运算符在对象比较上的区别
  • equals()方法和==运算符都可以用于对象比较,但它们有一些区别。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档