Java中Object類

Object類的概述

  • 類 Object 是類層次結(jié)構(gòu)的根類。
  • 每個(gè)類都使用 Object 作為超類。
  • 所有的類都直接或者間接的繼承自O(shè)bject類。

Object類的方法

  • public int hashCode()

    • 返回該對(duì)象的哈希碼值。默認(rèn)情況下,該方法會(huì)根據(jù)對(duì)象的地址來(lái)計(jì)算。
    • 不同對(duì)象的,hashCode()一般來(lái)說(shuō)不會(huì)相同。但是,同一個(gè)對(duì)象的hashCode()值肯定相同。
    • 不是對(duì)象的實(shí)際地址值,可以理解為邏輯地址值。
  • public final Class getClass()

    • 返回此 Object 的運(yùn)行時(shí)類。
    • 可以通過(guò)Class類中的一個(gè)方法,獲取對(duì)象的真實(shí)類的全名稱。
      • public String getName():以 String 的形式返回此 Class 對(duì)象所表示的實(shí)體
  • public String toString()

    • 返回該對(duì)象的字符串表示。
    //底層源碼。 
    public static String valueOf(Object obj) { 
        return (obj == null) ? "null" : obj.toString(); 
    }
    

 - 它的值等于:getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
 - 由于默認(rèn)情況下的數(shù)據(jù)對(duì)我們來(lái)說(shuō)沒有意義,一般建議重寫該方法。a:手動(dòng)重寫b:自動(dòng)生成
 - 注意:直接輸出一個(gè)對(duì)象的名稱,其實(shí)就是調(diào)用該對(duì)象的toString()方法。

- **public boolean equals(Object obj)**
- 指示其他某個(gè)對(duì)象是否與此對(duì)象“相等”。 (**下面有詳細(xì)講解**)
- **protected void finalize()** 
  - 當(dāng)垃圾回收器確定不存在對(duì)該對(duì)象的更多引用時(shí),由對(duì)象的垃圾回收器調(diào)用此方法。
  - 垃圾回收器不會(huì)馬上回收垃圾,但是我們可以建議它盡快回收垃圾。(System.gc()方法)
  - 主要針對(duì)堆內(nèi)存。

- **protected Object clone()** 
  - 創(chuàng)建并返回此對(duì)象的一個(gè)副本,這種克隆機(jī)制十分高效,而且二者之間完全隔離。
  - 自定義類實(shí)現(xiàn)克隆步驟:
    - 自定義類實(shí)現(xiàn)Cloneable接口,這是一個(gè)標(biāo)記性接口,實(shí)現(xiàn)這個(gè)接口的類的對(duì)象可以實(shí)現(xiàn)自我克隆。
   - 自定義類中重寫Object類的clone()方法。
   - 重寫clone()方法時(shí)通過(guò)super.clone()調(diào)用Object類的clone()方法來(lái)得到該對(duì)象的副本,并返回該副本。

> 這里我們?cè)賮?lái)詳細(xì)說(shuō)一下public boolean equals(Object obj)這個(gè)方法

- 這個(gè)方法,默認(rèn)情況下比較的是地址值。比較地址值一般來(lái)說(shuō)意義不大,所以我們要重寫該方法。
- 一般都是用來(lái)比較對(duì)象的成員變量值是否相同。
 那么 **==** 和 **equals**有什么區(qū)別呢?
> **==:** 基本類型:比較的就是值是否相同引用類型:比較的就是地址值是否相同**equals:** 引用類型:默認(rèn)情況下,比較的是地址值。不過(guò),我們可以根據(jù)情況自己重寫該方法。一般重寫都是自動(dòng)生成,比較對(duì)象的成員變量值是否相同(可以看上面代碼的舉例)




最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 34,853評(píng)論 18 399
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,279評(píng)論 0 62
  • java筆記第一天 == 和 equals ==比較的比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量...
    jmychou閱讀 1,658評(píng)論 0 3
  • Object類是Java中其他所有類的祖先,沒有Object類Java面向?qū)ο鬅o(wú)從談起。作為其他所有類的基類,Ob...
    時(shí)待吾閱讀 574評(píng)論 0 1
  • 黑夜不說(shuō)話 夜深人靜時(shí)爬到我的床沿 它企圖淹沒我的軀體 覆蓋我那疼痛的記憶 黑夜不說(shuō)話 撕開的傷口慢慢地迸發(fā)出鮮血...
    伍月的晴空閱讀 488評(píng)論 6 5

友情鏈接更多精彩內(nèi)容