登录
首页 >  文章 >  java教程

Java对象比较与equals使用技巧

时间:2026-01-21 23:10:32 341浏览 收藏

积累知识,胜过积蓄金银!毕竟在文章开发的过程中,会遇到各种各样的问题,往往都是一些细节知识点还没有掌握好而导致的,因此基础知识点的积累是很重要的。下面本文《Java对象比较与equals使用详解》,就带大家讲解一下知识点,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

答案:==比较引用地址,equals比较内容,重写equals必须重写hashCode以保证集合操作正确性。

Java中对象比较和equals方法使用

在Java中,比较对象时经常遇到“==”和equals方法的选择问题。理解它们的区别以及如何正确使用equals方法,是编写可靠代码的基础。

对象比较:== 与 equals 的区别

== 比较的是两个引用是否指向同一个内存地址,也就是是否为同一个对象实例。而 equals 方法默认行为也是比较引用,但可以在类中被重写,用于比较对象的内容是否相等。

例如:

String s1 = new String("hello");
String s2 = new String("hello");

System.out.println(s1 == s2);        // false,不同对象
System.out.println(s1.equals(s2));   // true,内容相同

这里s1和s2是两个不同的对象,所以 == 返回 false。但由于String类重写了equals方法,比较的是字符序列,因此返回 true。

equals 方法的正确重写规则

当自定义类需要基于内容判断相等时,必须重写 equals 方法。同时要遵守Java规范中的几个原则:自反性、对称性、传递性、一致性,以及对null的处理。

常见做法包括:

  • 先判断是否为同一引用(this == obj),提高性能
  • 检查 null 和类型匹配(instanceof)
  • 转换类型后逐字段比较

示例:

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 && 
               (name == null ? person.name == null : name.equals(person.name));
    }
}

为什么重写 equals 通常也要重写 hashCode

如果两个对象通过 equals 判断相等,那么它们的 hashCode 必须相同。否则在使用HashMap、HashSet等集合时会出现问题,比如对象无法正确查找或去重。

因此,只要重写了 equals,就应该重写 hashCode,确保逻辑一致。

可以借助IDE生成,或使用 Objects.hash() 方法:

@Override
public int hashCode() {
    return Objects.hash(name, age);
}

使用建议与常见陷阱

避免使用 == 比较值对象,尤其是包装类型(如Integer)。以下代码容易出错:

Integer a = 128;
Integer b = 128;
System.out.println(a == b);      // false
System.out.println(a.equals(b)); // true

因为Integer缓存只在-128到127之间有效,超出范围会创建新对象。

建议:

  • 字符串比较始终用 equals
  • 自定义类根据业务需求决定是否重写 equals
  • 重写 equals 时务必重写 hashCode
  • 考虑使用Objects.equals工具方法处理null安全比较
基本上就这些。掌握对象比较的核心在于理解引用与内容的区别,以及equals和hashCode的契约关系。不复杂但容易忽略细节。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《Java对象比较与equals使用技巧》文章吧,也可关注golang学习网公众号了解相关技术文章。

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>