A.所屬包 java.lang B.聲明 public class Object C.概述 是所有類的父類 D.構造方法: Object() E.常用成員方法 a.protected Object clone() 創建並返回該對象的一個副本,需要實現Cloneable介面重寫此方法 b.public ...
A.所屬包
java.lang
B.聲明
public class Object
C.概述
是所有類的父類
D.構造方法:
Object()
E.常用成員方法
a.protected Object clone()
創建並返回該對象的一個副本,需要實現Cloneable介面重寫此方法
b.public boolean equals(Object obj)
判斷兩個對象地址值是否相等,如果子類想要判斷內容是否相等需要重寫此方法
c.protected void finalize()
當垃圾回收器確定不存在該對象的更多引用時,由對象的垃圾回收器調用此方法回收對象,但回收時間不確定
d.public Class<?> getClass()
返回該對象所在類的位元組碼文件對象
e.public int hashCode()
返回該對象的哈希碼值
f.public String toString()
返回該對象的字元串表示,即:
this.getClass().getName()+"@"+Integer.toHexString(this.hashCode())
F.註意事項
a.Object類時所有類的父類
b.子類如果沒有重寫equals()方法預設比較的是地址值
c.直接輸出一個對象名,其實預設是調用該對象所在類的toString()方法
d.==和equals的區別?
==用於基本類型是比較值,用於引用類型是比較地址值
euqals只能用於引用類型,預設比較地址值
e.關於hashCode()與equals()
1.如果兩個對象equals,Java運行時環境會認為他們的hashcode一定相等
2.如果兩個對象不equals,但hashcode可能相等
3.如果兩個對象hashcode相等,但不一定equals
4.如果兩個對象hashcode不相等,肯定不equals
G.示例
class MyObject implements Cloneable//這裡實現了Cloneable介面,重寫了clone()方法
{
protected Object clone()
{
return this;
}
}
class MyObjectTest
{
public static void main(String[] args)
{
MyObject mobj1=new MyObject();
MyObject mobj2=new MyObject();
System.out.println(mobj1==mobj1.clone());//true
System.out.println(mobj1.equals(mobj2));//false
System.out.println(mobj1.hashCode());//697960108(每個人可能相同)
System.out.println(mobj1.toString());//object.MyObject@299a06ac(每個人可能不相同)
}
}