亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中object類常用方法及應(yīng)用場景詳解

 更新時間:2025年04月30日 08:25:42   作者:萌新下岸多多關(guān)照  
這篇文章主要介紹了Java中object類常用方法及應(yīng)用場景的相關(guān)資料,正確重寫這些方法是面向?qū)ο笤O(shè)計的基本要求,有助于避免踩坑并提高代碼質(zhì)量,需要的朋友可以參考下

在Java中,Object 類是所有類的根父類,其提供的方法會被所有子類繼承。以下是Object類的常用方法及其典型應(yīng)用場景:

1. toString()

  • 作用:返回對象的字符串表示(默認格式:類名@哈希碼)。

  • 重寫場景

    • 打印對象時需要可讀性更高的信息(如日志、調(diào)試)。

    • 集合的System.out.println()輸出依賴元素的toString()。

  • 示例

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }

2. equals(Object obj)

  • 作用:比較兩個對象是否“邏輯相等”(默認比較內(nèi)存地址,即==)。

  • 重寫場景

    • 需要根據(jù)對象內(nèi)容(而非地址)判斷相等性(如值對象、DTO)。

    • 集合類(如HashSet、ArrayList.contains())依賴此方法。

  • 規(guī)則

    • 必須重寫hashCode()以保證一致性(若equals返回true,hashCode必須相同)。

    • 滿足自反性、對稱性、傳遞性、一致性。

  • 示例

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }

3. hashCode()

  • 作用:返回對象的哈希碼(默認返回內(nèi)存地址的哈希值)。

  • 重寫場景

    • 對象作為HashMap的鍵或HashSet的元素時。

    • 必須與equals()邏輯一致。

  • 示例

    @Override
    public int hashCode() {
        return Objects.hash(name, age); // 使用工具類簡化計算
    }

4. getClass()

  • 作用:返回對象的運行時類(Class對象)。

  • 應(yīng)用場景

    • 反射操作(如動態(tài)創(chuàng)建實例、調(diào)用方法)。

    • 精確判斷對象類型(優(yōu)于instanceof)。

  • 示例

    Class<?> clazz = obj.getClass();
    System.out.println(clazz.getName()); // 輸出類全限定名

5. clone()

  • 作用:創(chuàng)建對象的淺拷貝副本。

  • 應(yīng)用場景

    • 需要復(fù)制對象時(需實現(xiàn)Cloneable標記接口,否則拋CloneNotSupportedException)。

    • 深拷貝需手動重寫(遞歸復(fù)制引用類型字段)。

  • 示例

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone(); // 淺拷貝
    }

6. finalize()(已廢棄)

  • 作用:對象被垃圾回收前調(diào)用的清理方法(Java 9+標記為廢棄)。

  • 替代方案:使用AutoCloseable(如try-with-resources)或顯式清理方法。

7. wait(), notify(), notifyAll()

  • 作用:線程間通信的等待/通知機制(必須在synchronized塊中使用)。

  • 應(yīng)用場景

    • 生產(chǎn)者-消費者模型。

    • 多線程協(xié)作任務(wù)(如線程池任務(wù)調(diào)度)。

  • 示例

    synchronized (lock) {
        while (conditionNotMet) {
            lock.wait(); // 釋放鎖并等待
        }
        // 執(zhí)行操作
        lock.notifyAll(); // 喚醒其他線程
    }

核心方法總結(jié)

方法典型應(yīng)用場景注意事項
toString()日志輸出、調(diào)試建議所有類重寫
equals()/hashCode()集合操作、對象比較必須同時重寫,保持邏輯一致
getClass()反射、類型判斷返回運行時類對象
clone()對象復(fù)制深拷貝需手動實現(xiàn)
wait()/notify()多線程同步需搭配synchronized使用

為什么重要?

  • 默認行為:所有類繼承Object,理解其方法避免踩坑(如集合比較錯誤)。

  • 框架依賴:如HashMap依賴hashCode()equals(),序列化依賴toString()。

  • 設(shè)計規(guī)范:正確重寫這些方法是面向?qū)ο笤O(shè)計的基本要求。

總結(jié) 

到此這篇關(guān)于Java中object類常用方法及應(yīng)用場景的文章就介紹到這了,更多相關(guān)object類常用方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot+nacos+gateway實現(xiàn)灰度發(fā)布的實例詳解

    springboot+nacos+gateway實現(xiàn)灰度發(fā)布的實例詳解

    灰度發(fā)布是一種在軟件部署過程中用于平滑過渡的技術(shù),通過引入灰度發(fā)布SDK和配置網(wǎng)關(guān)策略實現(xiàn),本文就來介紹一下,感興趣的可以了解一下
    2022-03-03
  • ReentrantReadWriteLock不能鎖升級的原因總結(jié)

    ReentrantReadWriteLock不能鎖升級的原因總結(jié)

    今天給大家?guī)淼氖顷P(guān)于Java并發(fā)的相關(guān)知識,文章圍繞著為什么ReentrantReadWriteLock不能鎖升級展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 基于SpringBoot啟動類靜態(tài)資源路徑問題

    基于SpringBoot啟動類靜態(tài)資源路徑問題

    這篇文章主要介紹了SpringBoot啟動類靜態(tài)資源路徑問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java MD5加密實現(xiàn)代碼

    java MD5加密實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了java MD5加密實現(xiàn)過程,為大家分享了MD5加密代碼,感興趣的小伙伴們可以參考一下
    2016-08-08
  • java數(shù)獨游戲完整版分享

    java數(shù)獨游戲完整版分享

    這篇文章主要為大家分享了java數(shù)獨游戲的完整版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • JVM常量池的深入講解

    JVM常量池的深入講解

    這篇文章主要給大家介紹了關(guān)于JVM常量池的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • java實現(xiàn)分布式鎖的常用三種方式

    java實現(xiàn)分布式鎖的常用三種方式

    本文主要介紹了java實現(xiàn)分布式鎖,一般有這3種方式,基于數(shù)據(jù)庫實現(xiàn)的分布式鎖、基于Redis實現(xiàn)的分布式鎖和基于Zookeeper實現(xiàn)的分布式鎖,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • IO密集型任務(wù)設(shè)置線程池線程數(shù)實現(xiàn)方式

    IO密集型任務(wù)設(shè)置線程池線程數(shù)實現(xiàn)方式

    這篇文章主要介紹了IO密集型任務(wù)設(shè)置線程池線程數(shù)實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java Socket實現(xiàn)UDP編程淺析

    Java Socket實現(xiàn)UDP編程淺析

    類 DatagramSocket 何 DatagramPacket(數(shù)據(jù)包/數(shù)據(jù)報) 實現(xiàn)了基于 UDP協(xié)議網(wǎng)絡(luò)程序;UDP數(shù)據(jù)報通過數(shù)據(jù)報套接字 DatagramSocket 發(fā)送和接收,系統(tǒng)不保證 UDP數(shù)據(jù)報一定能夠安全送達目的地,也不確定什么時候可以抵達
    2022-11-11
  • 最有價值的50道java面試題 適用于準入職Java程序員

    最有價值的50道java面試題 適用于準入職Java程序員

    這篇文章主要為大家分享了最有價值的50道java面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,對hashCode方法的設(shè)計、垃圾收集的堆和代進行剖析,感興趣的小伙伴們可以參考一下
    2016-05-05

最新評論