欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Java重寫equals和

傅雪莉1年前6瀏覽0評論

Java是一門面向對象的編程語言,在進行對象之間的比較時,通常使用equals方法。然而,Java的默認equals方法只比較兩個對象的引用地址,如果需要比較對象的屬性是否相等,就需要重寫equals方法。

重寫equals方法的關鍵是滿足以下條件:

1.自反性:對于任意非null的x,x.equals(x)應該返回true;
2.對稱性:對于任意非null的x和y,如果x.equals(y)返回true,則y.equals(x)也應該返回true;
3.傳遞性:對于任意非null的x、y和z,如果x.equals(y)返回true且y.equals(z)返回true,則x.equals(z)也應該返回true;
4.一致性:對于任意非null的x和y,無論調用多少次x.equals(y),結果始終相同;
5.非空性:對于任意的非null的x,x.equals(null)都應該返回false。

以下是一個簡單的重寫equals方法的示例:

public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (o == this) { // 自反性
return true;
}
if (!(o instanceof User)) {
return false;
}
User user = (User) o;
return user.age == this.age && user.name.equals(this.name); // 屬性比較
}
}

在重寫equals方法時,還需要重寫hashCode方法,以保證相等的兩個對象具有相等的hashCode值。

@Override
public int hashCode() {
int result = 17;
result = 31 * result + age;
result = 31 * result + name.hashCode();
return result;
}

重寫equals方法可以使得對象之間的比較更加準確,同時也有利于提高代碼的可讀性。