Java語言中,Object對象有個特殊的方法:hashcode(), hashcode()表示的是JVM虛擬機為這個Object對象分配的一個int類型的數值,JVM會使用對象的hashcode值來提高對HashMap、Hashtable哈希表存取對象的使用效率。
關於Object對象的hashCode()返回值,網上對它就是一個簡單的描述:“JVM根據某種策略生成的”,那么這種策略到底是什么呢?我有一個毛病,遇到這種含糊其辭的東西,就想探個究竟,所以,本文就將hashCode()本地方法的實現給扒出來,也給大家在了解hashCode()的過程中提供一點點幫助吧。
本文將根據openJDK 7源碼,向展示Java語言中的Object對象的hashCode() 生成的神秘面紗,我將一步一步地向讀者介紹Java Object 的hashcode()方法到底底層調用了什么函數。為了更好地了解這個過程,你可以自己下載openJDK 7 源碼,親自查看和跟蹤源碼,了解hashCode()的生成過程:
openJDK 7 下載地址1:http://download.java.net/openjdk/jdk7 (官網,下載速度較慢)
openJDK 7 下載地址2 :openjdk-7-fcs-src-b147-27_jun_2011.zip (csdn 網友提供的資源,很不錯)