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

深入了解Java Object類的使用

 更新時間:2022年07月13日 15:44:37   作者:世界盡頭與你  
java繼承中說到的Object類是java中一個特殊的類,所有的類都是直接或者間接的繼承自Object類。本文就和大家詳細講講Java Object類的使用,感興趣的可以了解一下

1.equals方法

==運算符

比較運算符,即可以判斷基本類型又可以判斷引用類型

如果判斷基本類型,則判斷值是否相等

如果判斷引用類型,則判斷地址是否相等,即判斷是否為同一個對象

equals

是object類的一個方法,只能判斷引用類型

object - equals源碼:

public boolean equals(Object obj) {
    return (this == obj);
}

可以清晰的看到,object類里的equals方法是判斷對象的地址是否相同(是不是同一個對象)

但是,其他數據類型類會重寫equals方法,比如String類的重寫:(判斷兩個字符串的值是否相等)

public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    return (anObject instanceof String aString)
            && (!COMPACT_STRINGS || this.coder == aString.coder)
            && StringLatin1.equals(value, aString.value);
}

實例:

String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // true

2.hashCode

提高具有哈希結構的容器的效率

兩個引用如果指向同一個對象,哈希值肯定(不沖突的情況下)一樣,反之不一樣

哈希值根據地址而來但并非地址

演示:

// hashCode
A a = new A();
A a1 = new A();
A a2 = a;
System.out.println(a.hashCode());
System.out.println(a1.hashCode());
System.out.println(a2.hashCode());
------------------------------

輸出:

1324119927
990368553
1324119927

3.toString

返回該對象的字符串表示

源碼:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

實例:

// toString
A a3 = new A("dahe",25,"安全服務工程師");
System.out.println(a3.toString());

輸出:

classes.A@41629346
包名.類名@十六進制的hashCode

現在我們在類中重寫一下toString方法(模板):

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

再次運行上面的代碼,現在輸出如下:

A{name='dahe', age=25, job='安全服務工程師'}

另外,當我們直接輸出對象時,會默認直接調用toString方法:

System.out.println(a3);

輸出:

A{name='dahe', age=25, job='安全服務工程師'}

4.finalize

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

注意:在JDK18中。finalize被棄用了。它雖然可以幫助我們主動釋放系統(tǒng)底層資源,但是說實話,沒用過,Java 是自動管理內存的,使用它反而會導致潛在的系統(tǒng)安全風險,沒幫助不說反而是負擔,所以計劃移除了。

實例:

// finalize
A a4 = new A("dh",33,"架構師");
a4 = null; // 這是a4成為了垃圾,垃圾回收器就會回收對象
// 在銷毀對象之前,會調用對象的finalize方法
// 程序員就可以在這個方法中寫入自己的業(yè)務,釋放資源

重寫finalize方法:

@Override
protected void finalize() throws Throwable {
    System.out.println("我們銷毀對象");
}

除此之外,還可以主動運行垃圾回收器:

System.gc(); // 主動調用垃圾回收器

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

相關文章

  • 使用maven生成可執(zhí)行的jar包的方法

    使用maven生成可執(zhí)行的jar包的方法

    這篇文章主要介紹了使用maven生成可執(zhí)行的jar包的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Mybatis注解開發(fā)@Select執(zhí)行參數和執(zhí)行sql語句的方式(最新詳解)

    Mybatis注解開發(fā)@Select執(zhí)行參數和執(zhí)行sql語句的方式(最新詳解)

    @Select 是 Mybatis 框架中的一個注解,用于執(zhí)行 SQL 查詢語句,并把查詢結果映射到指定的 Java 對象中,這篇文章主要介紹了Mybatis注解開發(fā)@Select執(zhí)行參數和執(zhí)行sql語句的方式,需要的朋友可以參考下
    2023-07-07
  • JAVA實現較完善的布隆過濾器的示例代碼

    JAVA實現較完善的布隆過濾器的示例代碼

    這篇文章主要介紹了JAVA實現較完善的布隆過濾器的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • Java使用分治算法實現排序數索引功能示例【二分搜索】

    Java使用分治算法實現排序數索引功能示例【二分搜索】

    這篇文章主要介紹了Java使用分治算法實現排序數索引功能,結合具體實例形式分析了java分治算法進行排序索引的相關操作技巧,需要的朋友可以參考下
    2017-09-09
  • 解決java.lang.ClassCastException的java類型轉換異常的問題

    解決java.lang.ClassCastException的java類型轉換異常的問題

    這篇文章主要介紹了解決java.lang.ClassCastException的java類型轉換異常的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Java中HashMap如何解決哈希沖突

    Java中HashMap如何解決哈希沖突

    本文主要介紹了Java中HashMap如何解決哈希沖突,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • Mybatis 創(chuàng)建方法、全局配置教程詳解

    Mybatis 創(chuàng)建方法、全局配置教程詳解

    MyBatis是一個半自動化的輕量級的持久化層框架。 MyBatis實際上是Ibatis3.0版本以后的持久化層框架,下面通過本文給大家分享Mybatis 創(chuàng)建方法、全局配置教程詳解,需要的朋友參考下吧
    2017-09-09
  • Java實現擲骰子控制臺和窗體兩種方法

    Java實現擲骰子控制臺和窗體兩種方法

    這篇文章主要為大家詳細介紹了Java實現擲骰子控制臺和窗體兩種方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java實現分布式系統(tǒng)限流

    Java實現分布式系統(tǒng)限流

    這篇文章主要為大家詳細介紹了Java實現分布式系統(tǒng)限流,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Spring中的編程式事務和聲明式事務

    Spring中的編程式事務和聲明式事務

    Spring框架中,事務管理可以通過編程式事務和聲明式事務兩種方式實現,編程式事務通過手動編碼控制事務的開始、提交和回滾,允許開發(fā)者精確控制事務,但增加了代碼復雜度,聲明式事務則通過@EnableTransactionManagement注解啟用事務管理
    2024-11-11

最新評論

芦溪县| 古田县| 平山县| 福海县| 泸西县| 铁力市| 小金县| 历史| 栾川县| 乌海市| 龙泉市| 金阳县| 玉屏| 浦江县| 宁化县| 鹤壁市| 东源县| 巫溪县| 亚东县| 高陵县| 拉孜县| 哈密市| 乌海市| 舒兰市| 乌兰察布市| 黄陵县| 星座| 潍坊市| 晋宁县| 桑植县| 赞皇县| 德惠市| 乐东| 广德县| 阳春市| 星子县| 乐陵市| 信阳市| 梨树县| 加查县| 永泰县|