在OSChina 中看到了一篇文章《Java 中正確使用 hashCode 和 equals 方法》,看到 hashCode 的方法體內的31比較有意思。
在Stackoverflow上找到了解釋,但沒完全看明白,大概意思是說31這個值是一個奇素數,只是一個默認的傳統。並不一定要用31。但是這個數可以通過位移的方式來處理乘法,獲得一些性能上的優化,虛擬機會自動做這些優化。
Stackoverflow 引用地址:http://stackoverflow.com/questions/299304/why-does-javas-hashcode-in-string-use-31-as-a-multiplier
---
另外可以把 hashCode的計算結果保存到成員變量中,避免重復計算。