一:看第乙個例子
public class cat1
public static void main(string args)
}
輸出結果:
false
false
cat1 == cat2 很簡單,他們不是同一物件,有不通的儲存位址。
但是cat1.equals(cat2)為什麼是false呢。因為cat是物件,這裡用的是父類的equals方法
而object類equals方法的實現為:
public boolean equals(object obj)
所以,obejct的equals方法本質上還是用==比較的。
二:嘗試重寫obejct的equals方法
public class cat2
public string getcolor()
public void setcolor(string color)
public int getheight()
public void setheight(int height)
public int getweight()
public void setweight(int weight)
/*** 重寫object的equals方法
*/public boolean equals(object obj) else if (obj instanceof cat2)
} return false;
} public static void main(string args)
}
輸出結果:
true
三:string的equals方法
string s1 = "abc";
string s2 = "abc";
system.out.println(s1.equals(s2));
返回true,因為string就重寫了object的equals方法
具體重寫實現為:
public boolean equals(object anobject)
if (anobject instanceof string)
return true;}}
return false;
}
java基礎 Object的主要方法
package test public class test7 這是它的底層 system.out.println s1 public final void notify 喚醒在此物件監視器上等待的單個執行緒。public final void notifyall 喚醒在此物件監視器上等待的所有執行...
Java基礎回顧Object類的方法重寫
a object類概述 類層次結構的根類 所有類都直接或者間接的繼承自該類 b 構造方法 public object 回想物件導向中為什麼說 子類的構造方法預設訪問的是父類的無參構造方法 public class test public class student public string tos...
Java 基礎之巧用Object類作為函式引數
看乙個小例子 public class base public class a extends base public class b extends base 可以看到每一字繼承base類的子類如果都需要showmessage這個函式,但是卻每個都重寫了一遍這個函式,無疑就是 冗餘 可以這樣改 p...