Object幾個比較重要的成員方法
public int hashCode()
返回該對象的哈希值:哈希值是根據哈希算法計算出來的一個值,這個值和對象地址有關,但不是實際地址,可以理解爲地址值
public final Class getClass()
返回此Object運行的類Class類方法:
public String getName();Srting形式返回該類的類名
Student s=new Student();
String str=s.getClass.getName();
syso(str);//打印 包名x.Student
public String toString()
返回該對象的字符串表示如果不重寫該方法,打印出來的是:
getClass().getName() + '@' + Integer.toHexString(hashCode())
通常,所有子類都應重寫該方法
重寫該方法最好的方式即自動生成,即shift+alt+f
Student s=new Student();
syso(s);//打印的是s.toString
public boolean equals(Object obj)
指示其他某個對象是否與此對象“相等”。源碼:
public boolean equals(Object obj){
return (this==obj);
}
如果不重寫該方法,默認比較的是兩個對象的hashCode值,即地址值。
(==:基本類型,比較值是否相同;引用類型,比較地址是否相同)
(equals:只能比較引用類型,不能比較基本類型)
重寫:
public boolean equals(Object obj){
//if(this.name.equals(obj.name)&&(this.age.equals(obj.age))
//obj是Student父類,不能引用name,age特有屬性,所以要向下轉型
Student s=(Student)obj;
if(this.name.equals(s.name)&&(this.age.equals(s.age)){
return true;
}
esle
return false;
}
重寫代碼優化:提高效率,提高代碼健壯性,可以自動生成
public boolean equals(Object obj){
if(this == obj){
return true;//兩者相同就不用向下轉型並比較了
}
if(obj instanceof Student){
return false;//判斷obj是否爲Student類的對象
}
Student s=(Student)obj;
return this.name.equals(s.name)&&(this.age.equals(s.age));
}
protected void finalize()
當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。protected Object clone()
創建並返回此對象的一個副本,即克隆實現克隆需要類實現Cloneable接口,以指示Object.clone()方法可以合法的對該類
進行字段複製