1 相等與同一
如果兩個對象具有相同的類型以及相同的屬性值,則稱這兩個對象相等。如果兩個引用對象指的是同一個對像,則稱這兩個變量同一。Object類中定義的equals 函數原型爲:public boolean equals(Object);他是判斷兩個對象是否同一,並不是是否相等。
2 equals方法
由於Object 類是所有類的最高基類,所有其他類都繼承類Object類的equals()方法,定義原型如下:
1 2 3 | public boolean equals (Object x){ return this == x; } |
在java中 “==” 是判斷兩個對象是否同一,而不是判斷相等。因此Object類中的equals方法也是判斷兩個對象是否同一。要判斷兩個對象是否相等,就需要重寫equals()方法。
3 equals()方法的重寫:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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)); } } |