JDK8 的默认hashCode的计算方法是通过和当前线程有关的一个随机数+三个确定值,运用Marsaglia’s xorshift scheme随机数算法得到的一个随机数
hashCode == 0
此类方案返回一个Park-Miller伪随机数生成器生成的随机数
OpenJdk 6 &7的默认实现。
- hashCode == 1
此类方案将对象的内存地址,做移位运算后与一个随机数进行异或得到结果
- hashCode == 2
此类方案返回固定的1 - hashCode == 3
此类方案返回一个自增序列的当前值 - hashCode == 4
此类方案返回当前对象的内存地址
可以通过在JVM启动参数中添加-XX:hashCode=4,改变默认的hashCode计算方式。