您的位置:首页 >Java对象比较应使用equals方法
发布于2025-11-23 阅读(0)
扫一扫,手机访问
对象比较应使用equals()方法而非==,因==比较引用地址;重写equals()需满足自反性、对称性、传递性、一致性,且与null比较返回false;同时应重写hashCode()以保证相等对象具有相同哈希码,确保集合类正常工作。

在Java中,对象的比较不能直接使用==运算符来判断两个对象的内容是否相等,因为==比较的是引用地址,即是否指向同一个对象实例。要比较对象的实际内容,应使用equals()方法。
Object类中的equals()方法默认也是比较引用地址,但很多类(如String、Integer、List等)都重写了该方法,用于比较对象的实际内容。
例如:
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2); // false,引用不同
System.out.println(str1.equals(str2)); // true,内容相同
如果你自定义了一个类,比如Person,需要根据业务逻辑重写equals()方法,才能正确比较两个对象是否“相等”。
当重写equals()方法时,应遵循Java规范中的约定,确保满足以下条件:
通常建议使用IDE生成或手动编写包含关键字段的比较逻辑。例如:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(name, person.name) &&
Objects.equals(age, person.age);
}
如果重写了equals(),还应同时重写hashCode()方法,以保证在HashMap、HashSet等集合中能正常工作。两个相等的对象必须具有相同的哈希码。
可以使用Objects.hash(...)来简化hashCode()的实现。
基本上就这些。对象比较用equals(),必要时重写它,并记得同步处理hashCode()。不复杂但容易忽略细节。
上一篇:天眼查如何监控竞争对手工商变更
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9