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

Java深入探究Object類的方法

 更新時間:2022年05月10日 11:26:37   作者:小學(xué)生?。? 
java繼承中說到的Object類是java中一個特殊的類,所有的類都是直接或者間接的繼承自O(shè)bject類,即如果某個類沒有使用extends關(guān)鍵字則默認(rèn)是java.lang.Object類的子類,所以所有的類都可以使用Object類中定義的方法,下面介紹Object類的常用方法

本文主要帶大家看看Object類中一些常用方法的API文檔的介紹和JDK中的源碼。

1.equals方法

1.API中equals方法的介紹

2.==和equals 的對比

  • == 既可以判斷基本類型,又可以判斷引用類型,如果判斷的是基本類型,判斷的是值是否相等,如果判斷的是引用類型,則判斷的是地址是否相等,即判斷是不是同一個對象。
  • equals 方法是 Object 類中的方法,只能判斷引用類型,默認(rèn)的是判斷地址是否相等,子類中往往會重寫該方法,重寫后用于判斷內(nèi)容是否相等

我們可以看看 Object,String 和 Integer中的 equals 方法的 JDK 源碼。

Object o = new Object();
o.equals(1);//Object類中的equals方法
System.out.println("hello".equals("hello"));//String中的equals方法
Integer integer = new Integer(5);
System.out.println(integer.equals(5));//Integer中的equals方法
//將光標(biāo)放在equals方法上,按Ctrl同時按鼠標(biāo)左鍵,就可跳轉(zhuǎn)到String和Integer中的equals方法的JDK源碼。
//Object類中的equals方法
public boolean equals(Object obj) {
        return (this == obj);//判斷是不是當(dāng)前對象
}
//String類中重寫的equals方法
public boolean equals(Object anObject) {
        if (this == anObject) {
            return true;//首先判斷是不是當(dāng)前對象
        }
        if (anObject instanceof String) {//判斷當(dāng)前類型是不是字符串類型
            String anotherString = (String)anObject;//向下轉(zhuǎn)型
            int n = value.length;//保存?zhèn)魅胱址拈L度
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
                while (n-- != 0) {
                    if (v1[i] != v2[i])//一個一個字符比較
                        return false;
                    i++;
                }
                return true;
            }
        }
        return false;
    }
 //Integer類中重寫的equals方法
public boolean equals(Object obj) {
        if (obj instanceof Integer) {//判斷當(dāng)前類型是不是Integer類型
            return value == ((Integer)obj).intValue();//向下轉(zhuǎn)型
        }
        return false;
    }

2.hashCode方法

1.API中hashCode方法的介紹

2.提高具有哈希結(jié)構(gòu)容器的的效率。

3.兩個引用,如果指向的同一個對象,哈希值一樣,指向不同對象,哈希值就不一樣。

4.哈希值主要根據(jù)地址來的,但不能將哈希值等價于地址。

3.toString方法

1.API中toString方法的介紹

2.默認(rèn)返回:全類名(包名+類名)+@+哈希值的十六進制。

3.往往重寫toString方法,用于返回對象屬性。

4.當(dāng)直接輸出對象時,toString方法會被默認(rèn)的調(diào)用。

//JDK中的toString方法源碼
public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    //返回全類名(包名+類名)+@+哈希值的十六進制
    }
//重寫toString方法
 @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }//往往重寫toString方法,用于返回對象屬性。

4.finalize方法

1.API中finalize方法的介紹

2.對象被回收時,系統(tǒng)自動調(diào)用該對象的finalize方法。子類可以重寫該方法,做一些釋放資源的操作。

3.當(dāng)某個對象沒有引用時,jvm就會使用垃圾回收機制來銷毀此對象,銷毀對象前會先調(diào)用finalize方法。

4.垃圾回收機制的調(diào)用,是由系統(tǒng)的GC算法來決定的,也可通過System.gc()主動觸發(fā)。

到此這篇關(guān)于Java深入探究Object類的方法的文章就介紹到這了,更多相關(guān)Java Object類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 8 中 Map 騷操作之 merge() 的使用方法

    Java 8 中 Map 騷操作之 merge() 的使用方法

    本文簡單介紹了一下Map.merge()的方法,除此之外,Java 8 中的HashMap實現(xiàn)方法使用了TreeNode和 紅黑樹,原理很相似,今天通過本文給大家介紹Java 8 中 Map 騷操作之 merge() 的用法 ,需要的朋友參考下吧
    2021-07-07
  • Java進階教程之String類

    Java進階教程之String類

    這篇文章主要介紹了Java進階教程之String類,String類對象是不可變對象(immutable object),String類是唯一一個不需要new關(guān)鍵字來創(chuàng)建對象的類,需要的朋友可以參考下
    2014-09-09
  • SpringBoot整合Swagger3生成接口文檔的示例代碼

    SpringBoot整合Swagger3生成接口文檔的示例代碼

    Swagger 是一個 RESTful API 的開源框架,它的主要目的是幫助開發(fā)者設(shè)計、構(gòu)建、文檔化和測試 Web API,本文給大家介紹了SpringBoot整合Swagger3生成接口文檔的流程,并通過代碼講解的非常詳細(xì),需要的朋友可以參考下
    2024-04-04
  • SpringBoot利用自定義注解實現(xiàn)多數(shù)據(jù)源

    SpringBoot利用自定義注解實現(xiàn)多數(shù)據(jù)源

    這篇文章主要為大家詳細(xì)介紹了SpringBoot如何利用自定義注解實現(xiàn)多數(shù)據(jù)源效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以了解一下
    2022-10-10
  • RestTemplate如何使用JSON發(fā)送Post請求

    RestTemplate如何使用JSON發(fā)送Post請求

    這篇文章主要介紹了RestTemplate如何使用JSON發(fā)送Post請求問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Java Map接口及其實現(xiàn)類原理解析

    Java Map接口及其實現(xiàn)類原理解析

    這篇文章主要介紹了Java Map接口及其實現(xiàn)類原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • SpringBoot項目如何設(shè)置權(quán)限攔截器和過濾器

    SpringBoot項目如何設(shè)置權(quán)限攔截器和過濾器

    這篇文章主要介紹了使用lombok時如何自定義get、set方法問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java中Integer和int的區(qū)別解讀

    Java中Integer和int的區(qū)別解讀

    這篇文章主要介紹了Java中Integer和int的區(qū)別解讀,大家都知道他可以表示一個整數(shù),而且也知道可以表示整數(shù)的還有int,只是使用Integer的次數(shù)要比int多得多,今天我們就來好好探究一下Integer與int的區(qū)別以及更深處的知識,需要的朋友可以參考下
    2023-12-12
  • java 一個截取字符串的函數(shù)

    java 一個截取字符串的函數(shù)

    java 編寫一個截取字符串的函數(shù),輸入為一個字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 要求不能出現(xiàn)截半的情況
    2017-02-02
  • Spring Boot實現(xiàn)發(fā)送郵件

    Spring Boot實現(xiàn)發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了Spring Boot實現(xiàn)發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論

义乌市| 巴林右旗| 图们市| 台东县| 连江县| 南充市| 依兰县| 富阳市| 恩施市| 南溪县| 合作市| 阳城县| 高淳县| 和龙市| 兰西县| 长宁区| 玉环县| 敦煌市| 南陵县| 枣庄市| 鹰潭市| 江山市| 册亨县| 漯河市| 台山市| 怀集县| 湖州市| 综艺| 延长县| 额济纳旗| 喀喇沁旗| 余姚市| 北海市| 搜索| 腾冲县| 洛隆县| 新沂市| 醴陵市| 长白| 衡阳市| 稻城县|