hashcode
根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值。可能和存储地址有一定关联,但不一定就是地址。
默认情况下,hashCode方法是将对象的存储地址进行映射。 两个对象的存储地址不同也有可能得到相同的hashcode值(几率很小)
- 比较
hashCode不同,那么肯定是不同的对象 hashCode相同,不一定是相同对象
所以需要重写hashCode方法,让equals方法和hashCode方法始终在逻辑上保持一致性。
- 底层实现 (有多种模式:五种,比如随机[默认]、自增、恒定、基于指针地址)
对于没有覆盖hashcode()方法的类,实例每次调用hashcode()方法,只有第一次计算哈希值,之后哈希值会存储在对象头的 标记字(MarkWord) 中。
默认为模式5: Marsaglia's xor-shift 随机数生成法