一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Object類中的equals和hashCode方法

 rongq2007 2021-01-26

無論何時這個equals方法被重寫那么都是有必要去重寫hashCode方法,這個是因為為了維持hashCode的一種約定,相同的對象必須要有相同的hashCode值。

--------------------------------------------------------------------------------------------

equals方法的結果為false,那么hashCode方法返回的結果可以相同也可以不相同。

---------------------------------------------------------------------------------------------

hashcode是Object中的函數,所有類都擁有的一個函數,主要返回每個對象的hash值,主要用于哈希表中,如HashMap、HashTable、HashSet。

哈希碼的通用約定如下:

  • 在java程序執(zhí)行過程中,在一個對象沒有被改變的前提下,無論這個對象被調用多少次,hashCode方法都會返回相同的整數值。對象的哈希碼沒有必要在不同的程序中保持相同的值。

  • 如果2個對象使用equals方法進行比較并且相同的話,那么這2個對象的hashCode方法的值也必須相等。

  • 如果根據equals方法,得到兩個對象不相等,那么這2個對象的hashCode值不需要必須不相同。但是,不相等的對象的hashCode值不同的話可以提高哈希表的性能。

  • 由下圖可以看到,hashCode是一個native方法,看不到實現(xiàn),注解中說hashCode返回的是由對象存儲地址轉化得到的值,是否如此,可以看源碼一探究竟。
    在這里插入圖片描述

  • 先給結論:

  • java6、7默認是返回隨機數

  • java8默認是通過和當前線程有關的一個隨機數+三個確定值,運用Marsaglia’s xorshift scheme隨機數算法得到的一個隨機數

  • 源碼探索過程可以參考:
    https://fangjian0423./2016/03/12/java-Object-method/

  • 參考

  • https:///entry/5968876df265da6c232898c2
    https://fangjian0423./2016/03/12/java-Object-method/

  • ---------------------------------------------------------------------------------------------------------------------------------------------

  • Java Object.hashCode()返回的是對象內存地址?

  • 基于OpenJDK 8

    一直以為Java Object.hashCode()的結果就是通過對象的內存地址做相關運算得到的,但是無意在網上看到有相應的意見爭論,故抽時間從源碼層面驗證了剖析了hashCode的默認計算方法。

    先說結論:OpenJDK8 默認hashCode的計算方法是通過和當前線程有關的一個隨機數+三個確定值,運用Marsaglia's xorshift scheme隨機數算法得到的一個隨機數。和對象內存地址無關。

  • ---------------------------------------------------------------------------------------------------------------------------------------------

當他們用(==)進行比較的時候,比較的是他們在內存中的存放地址,所以,除非是同一個new出來的對象,他們的比較后的結果為true,否則比較后結果為false。

對象是放在堆中的,棧中存放的是對象的引用(地址)。由此可見'=='是對棧中的值進行比較的。如果要比較堆中對象的內容是否相同,那么就要重寫equals方法了。 

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    东北老熟妇全程露脸被内射| 俄罗斯胖女人性生活视频| 欧美日韩亚洲国产av| 日韩偷拍精品一区二区三区| 国产传媒高清视频在线| 国产精品不卡高清在线观看| 亚洲中文字幕视频在线观看| 老司机精品国产在线视频| 肥白女人日韩中文视频| 国产精品午夜小视频观看| 亚洲精品黄色片中文字幕| 人妻偷人精品一区二区三区不卡| 欧美日韩乱码一区二区三区| 久久99爱爱视频视频| 少妇毛片一区二区三区| 欧美六区视频在线观看| 老司机亚洲精品一区二区| 国产精品香蕉一级免费| 精品一区二区三区人妻视频| 亚洲日本中文字幕视频在线观看 | 久久黄片免费播放大全| 国产精品第一香蕉视频| 国产一二三区不卡视频| 绝望的校花花间淫事2| 久久精品亚洲欧美日韩| 国产综合香蕉五月婷在线| 亚洲日本久久国产精品久久| 91偷拍视频久久精品| 亚洲高清亚洲欧美一区二区| 欧美成人欧美一级乱黄| 色好吊视频这里只有精| 亚洲国产香蕉视频在线观看| 美女露小粉嫩91精品久久久| 经典欧美熟女激情综合网| 国产传媒一区二区三区| 欧美午夜一级特黄大片| 又黄又硬又爽又色的视频| 成人区人妻精品一区二区三区| 国产亚洲精品岁国产微拍精品| 亚洲视频一区自拍偷拍另类| 91精品国产品国语在线不卡|