千鋒教育Java入門全套視頻教程(java核心技術,適合java零基礎,Java

Object中的hashCode()
hashCode方法用來返回對象的哈希值,提供該方法是為了支持哈希表,例如HashMap,HashTable等。
源碼中的hashCode其實是JVM啟動的一個參數(shù),每一個分支對應一個生成策略,通過-XX:hashCode
可以切換hashCode的生成策略。
下面驗證第2種生成策略,用軟件idea
輸入?yún)?shù)-XX:hashCode=2
,可以看到輸出結果正是1。
hashCode()和equals()
hashCode()和equals()用來標識對象,兩個方法協(xié)同工作用來判斷兩個對象是否相等。對象通過調(diào)用 Object.hashCode()生成哈希值,由于不可避免地會存在哈希值沖突的情況 因此hashCode 相同時 還需要再調(diào)用 equals 進行一次值的比較,但是若hashCode不同,將直接判定兩個對象不同,跳過 equals ,這加快了沖突處理效率。
如果兩個對象的equals的結果是相等的,則兩個對象的 hashCode 的返回結果也必須是相同的。
任何時候重寫equals,都必須同時重寫hashCode。
標簽: