07 Object類詳解
Object類詳解
object是所有類的超類,它擁有的方法,其他所有類的物件都會擁有,可以直接使用。
equals方法
- == 和 equals的對比
- == 是一個比較運算子:
既可以判斷基本型別(判斷的是值是否相等);也可以判斷引用型別(判斷的是地址是否相等),當兩邊型別不相等時編譯不透過。 - equals是object類的方法:
只能用來判斷引用型別;
預設判斷的是地址是否相等,子類中往往重寫該方法,用於判斷內容是否相等。比如Integer,String。
- == 是一個比較運算子:
hashcode方法
返回該物件的雜湊碼值,支援此方法是為了提高雜湊表(例如 Java.util.Hashtable提供雜湊表)的效能。
- 提高具有雜湊結構的容器的效率
- 兩個引用,如果指向的是同一個物件,則雜湊值肯定是一樣的
- 兩個引用,如果指向的是不同物件,則雜湊值等價是不一樣的(非絕對)
- 雜湊值主要根據地址號來的,但不能將地址和雜湊值等價
toString方法
預設返回:全類名+@+雜湊值的十六進位制;子類往往重寫toString方法,用於返回物件的屬性資訊
- 重寫 toString 方法,列印物件或拼接物件時,都會呼叫該物件的 toString形式
- 當直接輸出一個物件時,toString方法會被預設的呼叫
Finalize方法
當垃圾回收器確定不存在對該物件的更多引用時,由物件的垃圾回收器呼叫該方法。
(實際開發中,幾乎不用。瞭解應付面試)
- 當物件被回收時,系統自動呼叫該物件的finalize方法。子類可以重寫該方法,做一些釋放資源的操作(比如釋放資源:資料庫連線,或者開啟檔案...)
- 什麼時候被回收:當某個物件沒有任何引用時,則jvm就認為這個物件是一個垃圾物件,就會使用垃圾回收機制來銷燬該物件,在銷燬該物件前,會先呼叫finalize方法
- 垃圾回收機制的呼叫,是由系統來決定,也可以透過System.gc()主動觸發垃圾回收機制