標籤:object api
1. Object類
在Java體系中,java.lang.Object類位於頂端(是所有對象的直接或間接父類)。如果一個類沒有寫extends關鍵字聲明其父類,則該類預設繼承java.lang.Object類。Object類定義了“對象”的基本行為,被子類預設繼承。
1)toString方法:返回一個可以表示該對象屬性內容的字串。
MyObject obj=new MyObject(); // MyObject類自訂
String info=obj.toString();
System.out.println(info);
A.上例MyObject 類沒有toString方法,對象也能調用toString()?
因為所有的類都繼承自Object,而toString方法是Ojbect定義的,我們直接繼承了這個方法。Object的toString方法幫我們返回一個字串,這個字串的格式是固定的:類型@hashcode,這個hashcode是一串數字,在java中叫控制代碼,或叫地址(但不是真實的物理地址,是java自己的一套虛擬位址,防止直接操作記憶體的)。
public String toString(){ //只能用public,重寫的方法存取權限要大於等於父類中方法的許可權
return "這個是我們自己定義的toString方法的傳回值MyObject!";
}
B.為什麼要重寫toString方法?
toString定義的原意是返回能夠描述當前這個類的執行個體的一串文字,我們看一串hashcode沒意義,所以是要重寫的。
2)equals方法:用於對象的“相等”邏輯。
A.在Object中的定義:
public boolean equals(Object obj){
return (this==obj);
}
由此可見,this==obj與直接的==(雙等於)效果一樣,僅僅是根據對象的地址(控制代碼,那個hashcode值)來判斷對象是否相等。因此想比較對象與給定對象內容是否一致,則必須重寫equals方法。
B.“==”與equals的區別:
用“==”比較對象時,描述的是兩個對象是否為同一個對象!根據地址值判斷。而equals方法力圖去描述兩個對象的內容是否相等,內容相等取決於商務邏輯需要,可以自行定義比較規則。
C.equals方法的重寫:如,判斷兩點是否相等。
public boolean equals(Object obj){
/* 注意參數,若給定的對象obj的地址和當前對象地址一致,那麼他們是同一個對象,
* equals方法中有大量的內容比較邏輯時,加上這個判斷會節省效能的開銷!
*/
if(this == obj){
return true;
}
/* equals比較前要進行安全驗證,確保給定的對象不是null!若obj是null,
* 說明該引用變數沒有指向任何對象,那麼就不能引用ojb所指象的對象(因為對象不存在)
* 的屬性和方法!若這麼做就會引發NullPointException,null 指標異常!
*/
if(obj == null){
return false;
}
/* 直接將Object轉為子類是存在風險的!我們不能保證Object和我們要比較的對象是
* 同一個類型的這會引發ClassCastException!我們稱為:類造型異常。
* 重寫equals時第一件要做的事情就是判斷給定的對象是否和當前對象為同一個類型,
* 不是同類型直接返回false,因為不具備可比性!
*/
if( !(obj instanceof Point) ){
return false;
}
// 是同一類型,轉換
Point p=(Point)obj;
// 最後返回內容比較( 根據實際情況決定 )
return this.x==p.x && this.y==p.y;
}
2. API介紹
API文檔是我們用來瞭解JDK中提供的類庫,我們可以先通過索引輸入並找到我們需要瞭解的類,而後我們就可以方便的瞭解該類的作用,常量的作用,以及該類提供的所有方法的作用,以及方法的參數及傳回值的含義。
650) this.width=650;" style="width:663px;height:496px;" title="12.jpg" src="http://s3.51cto.com/wyfs02/M02/6D/A5/wKiom1VoIAegYV-uAAeTDL48mlQ587.jpg" width="1102" height="638" alt="wKiom1VoIAegYV-uAAeTDL48mlQ587.jpg" />
本文出自 “永遠年輕” 部落格,請務必保留此出處http://kingkongzhao.blog.51cto.com/6319491/1656398
Java核心API -- 1(Object類)