最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

1. toString()

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

  • 重寫(xiě)場(chǎng)景

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

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

  • 示例

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

2. equals(Object obj)

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

  • 重寫(xiě)場(chǎng)景

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

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

  • 規(guī)則

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

    • 滿足自反性、對(duì)稱性、傳遞性、一致性。

  • 示例

    @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()

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

  • 重寫(xiě)場(chǎng)景

    • 對(duì)象作為HashMap的鍵或HashSet的元素時(shí)。

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

  • 示例

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

4. getClass()

  • 作用:返回對(duì)象的運(yùn)行時(shí)類(Class對(duì)象)。

  • 應(yīng)用場(chǎng)景

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

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

  • 示例

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

5. clone()

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

  • 應(yīng)用場(chǎng)景

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

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

  • 示例

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

6. finalize()(已廢棄)

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

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

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

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

  • 應(yīng)用場(chǎng)景

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

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

  • 示例

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

核心方法總結(jié)

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

為什么重要?

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

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

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

總結(jié) 

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

  • SpringBoot整合Canal實(shí)現(xiàn)數(shù)據(jù)庫(kù)實(shí)時(shí)同步的完整指南

    SpringBoot整合Canal實(shí)現(xiàn)數(shù)據(jù)庫(kù)實(shí)時(shí)同步的完整指南

    當(dāng)業(yè)務(wù)數(shù)據(jù)在MySQL中發(fā)生變化時(shí),如何實(shí)時(shí)同步到其他服務(wù)或緩存中,阿里巴巴開(kāi)源的Canal組件為我們提供了完美的解決方案,下面我們就來(lái)看看SpringBoot整合Canal的技術(shù)內(nèi)幕吧
    2026-02-02
  • Java設(shè)計(jì)模式之適配器模式的實(shí)現(xiàn)

    Java設(shè)計(jì)模式之適配器模式的實(shí)現(xiàn)

    這篇文章主要介紹了Java設(shè)計(jì)模式之適配器模式的實(shí)現(xiàn),適配器模式(Adapter Pattern)是作為兩個(gè)不兼容的接口之間的橋梁,這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它結(jié)合了兩個(gè)獨(dú)立接口的功能,需要的朋友可以參考下
    2023-11-11
  • springmvc中RequestMappingHandlerAdapter與HttpMessageConverter的裝配講解

    springmvc中RequestMappingHandlerAdapter與HttpMessageConverter的

    今天小編就為大家分享一篇關(guān)于springmvc中RequestMappingHandlerAdapter與HttpMessageConverter的裝配講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • IDEA中如何查找jar包之間的依賴關(guān)系并忽略依賴的某個(gè)包

    IDEA中如何查找jar包之間的依賴關(guān)系并忽略依賴的某個(gè)包

    這篇文章主要介紹了IDEA中如何查找jar包之間的依賴關(guān)系并忽略依賴的某個(gè)包?本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 學(xué)習(xí)非阻塞的同步機(jī)制CAS

    學(xué)習(xí)非阻塞的同步機(jī)制CAS

    現(xiàn)代的處理器都包含對(duì)并發(fā)的支持,其中最通用的方法就是比較并交換(compare and swap),簡(jiǎn)稱CAS。下面我們來(lái)一起學(xué)習(xí)一下吧
    2019-05-05
  • Java數(shù)據(jù)類型的規(guī)則

    Java數(shù)據(jù)類型的規(guī)則

    這篇文章主要介紹了Java數(shù)據(jù)類型的規(guī)則的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-12-12
  • 一文教你如何通過(guò)三級(jí)緩存解決Spring循環(huán)依賴

    一文教你如何通過(guò)三級(jí)緩存解決Spring循環(huán)依賴

    這篇文章主要介紹了如何通過(guò)三級(jí)緩存解決?Spring?循環(huán)依賴,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-07-07
  • SpringBoot定制三種錯(cuò)誤頁(yè)面及錯(cuò)誤數(shù)據(jù)方法示例

    SpringBoot定制三種錯(cuò)誤頁(yè)面及錯(cuò)誤數(shù)據(jù)方法示例

    Spring Boot提供的默認(rèn)異常處理機(jī)制通常并不一定適合我們實(shí)際的業(yè)務(wù)場(chǎng)景,因此,我們通常會(huì)根據(jù)自身的需要對(duì)Spring Boot全局異常進(jìn)行統(tǒng)一定制,例如定制錯(cuò)誤頁(yè)面,定制錯(cuò)誤數(shù)據(jù)等。本文主要介紹了SpringBoot三種自定義錯(cuò)誤頁(yè)面的實(shí)現(xiàn),快來(lái)學(xué)習(xí)吧
    2021-12-12
  • 最新評(píng)論

    原平市| 潮州市| 乳山市| 太康县| 江油市| 漾濞| 普定县| 库车县| 石楼县| 宁安市| 乐都县| 维西| 双桥区| 嘉荫县| 双鸭山市| 香港 | 恭城| 巴塘县| 靖边县| 大洼县| 青神县| 淮滨县| 政和县| 通化县| 锦州市| 花莲县| 南康市| 永安市| 神池县| 华阴市| 滁州市| 荃湾区| 淮阳县| 勐海县| 黄骅市| 清新县| 广河县| 万荣县| 临江市| 博爱县| 金秀|