1 相等與同一
如果兩個對象具有相同的類型以及相同的屬性值,則稱這兩個對象相等。如果兩個引用對象指的是同一個對像,則稱這兩個變量同一。Object類中定義的equals 函數原型為:public boolean equals(Object);他是判斷兩個對象是否同一,並不是是否相等。
2 equals方法
由於Object 類是所有類的最高基類,所有其他類都繼承類Object類的equals()方法,定義原型如下:
public boolean equals (Object x){
return this == x;
}
在java中 “==” 是判斷兩個對象是否同一,而不是判斷相等。因此Object類中的equals方法也是判斷兩個對象是否同一。要判斷兩個對象是否相等,就需要重寫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 x){
if(this.getClass() != x.getClass())
return false;
Person p = (Person)x;
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));
}
}
