讲一下Java中equals和toString方法的重写
时间: 2023-11-11 17:22:11 浏览: 124
在Java中,equals和toString方法都是Object类中的方法,可以在所有的类中直接使用。但有时候需要对这些方法进行重写,以便满足具体的需求。
1. equals方法的重写:
在Java中,equals方法的默认实现是比较两个对象的引用是否相等。如果我们想要比较对象的属性是否相等,就需要重写equals方法。一般来说,我们需要在重写equals方法时遵循以下规则:
(1)自反性:对于任意非空的引用值x,x.equals(x)应该返回true。
(2)对称性:对于任意的引用值x和y,当且仅当y.equals(x)返回true时,x.equals(y)应该返回true。
(3)传递性:对于任意的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)也应该返回true。
(4)一致性:对于任意的引用值x和y,如果用于equals比较的对象没有被修改,那么多次调用x.equals(y)应该一致地返回true或false。
(5)非空性:对于任意非空的引用值x,x.equals(null)应该返回false。
一个典型的equals方法的重写如下:
```
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
MyClass other = (MyClass) obj;
if (myField == null) {
if (other.myField != null) {
return false;
}
} else if (!myField.equals(other.myField)) {
return false;
}
return true;
}
```
2. toString方法的重写:
在Java中,toString方法的默认实现是返回一个对象的类名和哈希码。如果我们想要返回一个更有意义的字符串,就需要重写toString方法。一般来说,我们需要在重写toString方法时遵循以下规则:
(1)返回的字符串应该包含对象的重要属性值。
(2)返回的字符串应该简洁明了,易于阅读。
一个典型的toString方法的重写如下:
```
@Override
public String toString() {
return "MyClass [myField=" + myField + "]";
}
```
这个方法返回一个字符串,包含了myField属性的值。
阅读全文