JAVA Object類
java.lang.Object
java.lang包在使用的時候無需顯示匯入,編譯時由編譯器自動匯入。
Object類是類層次結構的根,Java中所有的類從根本上都繼承自這個類。
Object類是Java中唯一沒有父類的類。
其他所有的類,包括標準容器類,比如陣列,都繼承了Object類中的方法。
Object類中的方法
構造方法:public Object()
文件中的類概覽:
protected Object clone()
Creates and returns a copy of this object.
Object類中的說明是:
protected Object clone()
throws CloneNotSupportedException
這個方法比較特殊:
首先,使用這個方法的類必須實現java.lang.Cloneable介面,否則會丟擲CloneNotSupportedException異常。
Cloneable介面中不包含任何方法,所以實現它時只要在類宣告中加上implements語句即可。
第二個比較特殊的地方在於這個方法是protected修飾的,覆寫clone()方法的時候需要寫成public,才能讓類外部的程式碼呼叫。
boolean equals(Object obj)
Indicates whether some other object is "equal to" this one.
“==”運算子判斷兩個引用是否指向同一個物件。
對於Object類的equals()方法來說,它判斷呼叫equals()方法的引用於傳進來的引用是否一致,即這兩個引用是否指向的是同一個物件。
Object類中的equals()方法如下:
public boolean equals(Object obj) { return (this == obj); }
即Object類中的equals()方法等價於==。
只有當繼承Object的類覆寫(override)了equals()方法之後,繼承類實現了用equals()方法比較兩個物件是否相等,才可以說equals()方法與==的不同。
equals()方法需要具有如下特點:
自反性(reflexive):任何非空引用x,x.equals(x)返回為true。
對稱性(symmetric):任何非空引用x和y,x.equals(y)返回true當且僅當y.equals(x)返回true。
傳遞性(transitive):任何非空引用x和y,如果x.equals(y)返回true,並且y.equals(z)返回true,那麼x.equals(z)返回true。
一致性(consistent):兩個非空引用x和y,x.equals(y)的多次呼叫應該保持一致的結果,(前提條件是在多次比較之間沒有修改x和y用於比較的相關資訊)。
約定:對於任何非空引用x,x.equals(null)應該返回為false。
並且覆寫equals()方法時,應該同時覆寫hashCode()方法,反之亦然。
int hashCode()
Returns a hash code value for the object.
當你覆寫(override)了equals()方法之後,必須也覆寫hashCode()方法,反之亦然。
這個方法返回一個整型值(hash code value),如果兩個物件被equals()方法判斷為相等,那麼它們就應該擁有同樣的hash code。
Object類的hashCode()方法為不同的物件返回不同的值,Object類的hashCode值表示的是物件的地址。
hashCode的一般性契約(需要滿足的條件)如下:
1.在Java應用的一次執行過程中,如果物件用於equals比較的資訊沒有被修改,那麼同一個物件多次呼叫hashCode()方法應該返回同一個整型值。
應用的多次執行中,這個值不需要保持一致,即每次執行都是保持著各自不同的值。
2.如果equals()判斷兩個物件相等,那麼它們的hashCode()方法應該返回同樣的值。
3.並沒有強制要求如果equals()判斷兩個物件不相等,那麼它們的hashCode()方法就應該返回不同的值。
即,兩個物件用equals()方法比較返回false,它們的hashCode可以相同也可以不同。但是,應該意識到,為兩個不相等的物件產生兩個不同的hashCode可以改善雜湊表的效能。
String toString()
Returns a string representation of the object.
當列印引用,如呼叫System.out.println()時,會自動呼叫物件的toString()方法,列印出引用所指的物件的toString()方法的返回值,因為每個類都直接或間接地繼承自Object,因此每個類都有toString()方法。
Object類中的toString()方法定義如下:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30316686/viewspace-2090639/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java常用類-Object類JavaObject
- Java中常用類之Object類JavaObject
- java之Object類介紹JavaObject
- Java Object類的各個方法JavaObject
- Java™ 教程(Object作為超類)JavaObject
- Java中Object類的常用方法JavaObject
- 理解Java中物件基礎Object類Java物件Object
- JAVA中object類中toString()方法JavaObject
- object類Object
- 深入研究java.lang.Object類薦JavaObject
- Java類是如何預設繼承Object的?Java繼承Object
- 【Java面試題】之Object類中方法詳解Java面試題Object
- Java中Class類與Object類之間有什麼關係?JavaObject
- Java面試系列第2篇-Object類中的方法Java面試Object
- Object類toString()Object
- Object類物件剖析Object物件
- 夯實Java基礎系列9:深入理解Class類和Object類JavaObject
- JAVA集合類簡要筆記 - 內部類 包裝類 Object類 String類 BigDecimal類 system類Java筆記ObjectDecimal
- Java核心技術第五章——2.Object類JavaObject
- 常見物件-Object類物件Object
- Object類-equals()、==、hashCode()Object
- 內部類,Object,字串Object字串
- Java Object類 和 String類 常見問答 6k字+總結JavaObject
- 【轉】Object類的常用方法Object
- Object類有哪些公用方法?Object
- JDK原始碼閱讀-Object類JDK原始碼Object
- JDK 原始碼分析(1) Object類JDK原始碼Object
- 五、Object-C 類NSObjectObject
- JavaSE-繼承(包含Object類)Java繼承Object
- Java Object 之hashCodeJavaObject
- Object類和String類equals方法的區別Object
- JavaBean重寫Object類中的方法JavaBeanObject
- Object所有類的超類之幾個方法詳析Object
- 從 Java 到 Scala(二):objectJavaObject
- JAVA中Object轉StringJavaObject
- JavaSE基礎知識學習-----Object類JavaObject
- java基礎:Object的equals方法JavaObject
- 為普通Object新增類似AttachedProperty的屬性Object