色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

java equals()重寫和不重寫

吉茹定1年前7瀏覽0評論

Java中的equals()方法用于比較兩個對象是否相等。在不重寫equals()方法的情況下,Java會自動調用Object類中的equals()方法進行比較,這意味著只有當兩個對象的引用指向同一個地址時,才會被認為是相等的。

public class Dog {
private String name;
private int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
Dog dog1 = new Dog("旺財", 3);
Dog dog2 = new Dog("旺財", 3);
System.out.println(dog1==dog2);
System.out.println(dog1.equals(dog2));
}
}

輸出結果為:

false
false

可以看到,因為dog1和dog2的地址是不同的,所以使用==比較為false。而由于equals()方法沒有被重寫,因此Java自動調用Object的equals()方法進行比較,結果也為false。

如果我們想要比較兩個對象內容是否相等,就需要重寫equals()方法。一般來說,我們會比較兩個對象的屬性值是否相等。下面是一個重寫equals()方法的例子:

public class Dog {
private String name;
private int age;
public Dog(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof Dog)) {
return false;
}
Dog other = (Dog) obj;
return name.equals(other.name) && age == other.age;
}
public static void main(String[] args) {
Dog dog1 = new Dog("旺財", 3);
Dog dog2 = new Dog("旺財", 3);
System.out.println(dog1==dog2);
System.out.println(dog1.equals(dog2));
}
}

輸出結果為:

false
true

由于重寫了equals()方法,而兩個對象的屬性值都相同,因此調用equals()方法會返回true。