java中如何判定兩個對象屬於同一類

http://blog.csdn.net/i46614161/article/details/4480765


首先:可用instanceof判斷一個對象是否屬於某一類,兩個對象的情況如obj1與obj2,可用 System.out.println((obj1 instanceof Student) && (obj2 instanceof Student));判斷,如果爲true即是同屬一類。


但我猜你可能想問的是如果判斷兩個對象是否相等,下面提供一個例子讓你參考:


一:
class Student {
String name;
Student(String name) {
this.name = name;
}
}

public class Test {
public static void main(String[] args) {
Object o1 = new Student("lili");
Object o2 = new Student("lili");
System.out.println(o1 == o2);
System.out.println(o1.equals(o2));
}
}
輸出結果是:
false
false
o1 == o2 這樣比較的是對象的引用,但這裏明顯不是同一對象,所以爲false
o1.eqauls(o2)是比較的是對象的內容,但這依賴於equals()方法,這裏沒有實現equals()方法,也就是一個類,如果沒有實現equals()方法,除了同一對象外,都不會有相等的機會
第二個例子:我們在這裏實現equals方法,假設姓名相等則是同一學生
class Student {
String name;
Student(String name) {
this.name = name;
}
@Override//從Object類繼承而來
public boolean equals(Object obj) {
Student otherObj = (Student)obj;
if(obj == this) { // 如果是同一個對象,則相等
return true;

if(otherObj.name.equals(this.name)) { //如果姓名相等,則相等
return true;
}
return false; //否則,不是上面兩種情況則不相等.
}
}

public class Test {
public static void main(String[] args) {
Object o1 = new Student("lili");
Object o2 = new Student("lili");
System.out.println(o1 == o2);
System.out.println(o1.equals(o2));
}
}
輸出結果
false
true
也就是說,這兩個對象是相等的,而規則是由我們在equals方法裏定義。

小結:==是判斷兩個對象是否是同一對象,而equals()則判斷兩個對象的內容是否相等,但條件是類必須已經實現了從Object繼承而來的equals()方法。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章