Java如何重写equals,比较对象的内存地址
时间: 2023-01-11 13:55:36 浏览: 124
Java中可以重写`equals`方法来比较两个对象是否相等。重写方法需要遵循如下规则:
1. 自反性:对于任意非空引用值x,x.equals(x)应该返回true。
2. 对称性:对于任意非空引用值x和y,x.equals(y)应该和y.equals(x)返回的结果相同。
3. 传递性:对于任意非空引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)也应该返回true。
4. 与null比较:对于任意非空引用值x,x.equals(null)应该返回false。
这里是一个示例重写equals方法:
```java
class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof MyClass)) {
return false;
}
MyClass c = (MyClass) o;
return c.value == this.value;
}
}
```
默认情况下,Object类中的equals方法比较的是对象的内存地址,但是通常我们并不需要这样。所以需要重写这个方法来比较对象的内容。
阅读全文