public class EqualsExample {
// 定义一个类,重写equals方法
public static class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 重写equals方法
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true; // 如果是同一个对象,直接返回true
}
if (obj == null || getClass() != obj.getClass()) {
return false; // 如果参数为null或者类型不匹配,返回false
}
Person person = (Person) obj;
return age == person.age && (name != null ? name.equals(person.name) : person.name == null);
}
// 重写hashCode方法(通常与equals一起重写)
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + age;
return result;
}
}
public static void main(String[] args) {
Person person1 = new Person("Alice", 30);
Person person2 = new Person("Alice", 30);
Person person3 = new Person("Bob", 25);
System.out.println(person1.equals(person2)); // 输出: true
System.out.println(person1.equals(person3)); // 输出: false
}
}
equals 方法:在 Person 类中重写了 Object 类的 equals 方法。equals 方法用于比较两个对象是否相等。
this == obj)。null 或者类型是否匹配(getClass() != obj.getClass())。name 和 age),确保它们相等。hashCode 方法:通常当重写 equals 方法时,也需要重写 hashCode 方法。hashCode 的作用是生成一个哈希值,用于哈希表(如 HashMap、HashSet)中的快速查找。如果两个对象的 equals 返回 true,那么它们的 hashCode 必须相同。
测试代码:在 main 方法中创建了几个 Person 对象,并使用 equals 方法进行比较。
上一篇:java socket编程
下一篇:java override
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站