散列函数又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。存储在对象头markWord,如下图我们知道了他是存储的位置,那他是什么时候存储进去的呢?在Java中Object.class中有hashCode方法,方法是native 方法,实现就是在JVM中实现的,也就是说他是使用C语言实现的。三个确定确定值分别是:可以通过在JVM启动参数中添加-XX:hashCode=4,改变默认的hashCode计算方式。如上文提到,我们不按传统规则重写了equals方法,所以为了不违反规则也就得重写hashCode。源码中hashcode的重写,如hashMap中如果m1.entrySet( ).equals,则两个映射m1和 m2表示相同的映射 。这样可确保 equals方法可在Map接口的不同实现中正常工作。
暂无评论