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 中文站