java如何重写equals方法
时间: 2024-03-21 08:17:19 浏览: 68
在Java中,equals方法是用来比较两个对象是否相等的方法。默认情况下,equals方法是比较两个对象的内存地址,如果地址相同则返回true,否则返回false。如果我们想要比较两个对象的内容是否相等,就需要重写equals方法。
重写equals方法需要遵循以下几个规则:
1. 对称性:如果a.equals(b)返回true,则b.equals(a)也应该返回true。
2. 自反性:一个对象a调用equals方法,应该返回true。
3. 传递性:如果a.equals(b)返回true,b.equals(c)也返回true,则a.equals(c)也应该返回true。
4. 一致性:如果两个对象没有发生变化,则多次调用equals方法应该返回相同的结果。
5. 非空性:任何对象调用equals方法,都不应该返回null。
下面是一个重写equals方法的例子:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Person)) {
return false;
}
Person person = (Person) obj;
return person.name.equals(name) && person.age == age;
}
}
```
在这个例子中,我们重写了equals方法,并且只比较了两个Person对象的name和age属性是否相等。
阅读全文