// 定义一个类来演示重写 equals 和 hashCode 方法
public class Person {
private String name;
private int age;
// 构造方法
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter 和 Setter 省略
// 重写 equals 方法
@Override
public boolean equals(Object obj) {
// 检查是否为同一对象
if (this == obj) {
return true;
}
// 检查是否为 null 或类型不匹配
if (obj == null || getClass() != obj.getClass()) {
return false;
}
// 类型转换
Person person = (Person) obj;
// 比较属性值
return age == person.age && (name != null ? name.equals(person.name) : person.name == null);
}
// 重写 hashCode 方法
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + age;
return result;
}
// 测试代码
public static void main(String[] args) {
Person p1 = new Person("Alice", 25);
Person p2 = new Person("Alice", 25);
System.out.println(p1.equals(p2)); // 输出 true
System.out.println(p1.hashCode() == p2.hashCode()); // 输出 true
}
}
null 或类型不匹配,最后比较对象的属性值。HashMap、HashSet)中。为了确保一致性,如果两个对象通过 equals 方法被认为是相等的,那么它们的 hashCode 方法返回的哈希码也必须相同。Person 对象,并验证它们的 equals 和 hashCode 方法是否按预期工作。上一篇:java的三大特征
下一篇:java比较字符串大小的方法
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站