1、相等與同一
如果兩個(gè)對象具有相同的類型以及相同的屬性值,則稱這兩個(gè)對象相等。如果兩個(gè)引用(地址)對象指的是同一個(gè)對象,則稱這兩個(gè)變量同一。Object類中定義的equals 函數(shù)原型為:public boolean equals(Object);他是判斷兩個(gè)對象是否同一,并不是是否相等。
2、equals方法
由于Object 類是所有類的最高基類,所有其他類都繼承類Object類的equals()方法,定義原型如下:
public boolean equals(Object obj){
this == obj;
}
在java中 “==” 是判斷兩個(gè)對象是否同一,而不是判斷相等。因此Object類中的equals方法也是判斷兩個(gè)對象是否同一。要判斷兩個(gè)對象是否相等,就需要重寫equals()方法。
3、equals()方法的重寫
class Person{
public String name;
public int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
@Override//重寫
public boolean equals(Object obj){
if(?。╫bj instanceof Person)) {
return false;
}
Person p = (Person)x;//體現(xiàn)了多態(tài)的思想,equals系統(tǒng)中的形參類型是Object
return (this.name == p.name) &&
(this.age == p.age);
}
}
public class Test{
public static void main(String [] args){
Person p1 = new Person("Lily",23);
Person p2 = new Person("Lily",23);
System.out.println(p1.equals(p2));
}
}