HashCode
hashcode生成策略(默认是5)
-
hashcode == 0 随机数
-
hashcode == 1 对象地址 + 随机数
-
hashcode == 2 固定值1
-
hashcode == 3 递增数列
-
hashcode == 5或其他 随机数
如果是随机数,那为什么同一个对象调用hashcode的值打印的结果都一样?
Object obj = new Object();
System.out.println(obj.hashCode()); // 第一次调用 采用随机数作为 hashCode,存入对象的markword中
System.out.println(obj.hashCode()); //再调用,直接从对象的markword中取即可,不用重复产生
System.out.println(obj.hashCode());