Java面试--HashCode

面试题:hashCode知道是干什么的吗?如果要你重写,需要注意哪些点?(腾讯面试题)
面试题:问我使用hashmap时重写哪两个方法,为什么要重写(百度面试题)

一、hashCode简介
public int hashCode():hashCode是根类Obeject中的方法。默认情况下,Object中的hashCode() 返回对象的32位jvm内存地址。也就是说如果对象不重写该方法,则返回相应对象的32为JVM内存地址。
二、hashCode注意点
关于hashCode方法,一致的约定是:
1、重写了euqls方法的对象必须同时重写hashCode()方法。
2、如果两个对象equals相等,那么这两个对象的HashCode一定也相同
3、如果两个对象的HashCode相同,不代表两个对象就相同,只能说明这两个对象在散列存储结构中,存放于同一个位置
三、hashCode作用
从Object角度看,JVM每new一个Object,它都会将这个Object丢到一个Hash表中去,这样的话,下次做Object的比较或者取这个对象的时候(读取过程),它会根据对象的HashCode再从Hash表中取这个对象。这样做的目的是提高取对象的效率。若HashCode相同再去调用equal。
HashCode是用于查找使用的,而equals是用于比较两个对象的是否相等的。
四、为什么重写
实际开发的过程中在hashmap或者hashset里如果不重写的hashcode和equals方法的话会导致我们存对象的时候,把对象存进去了,取的时候却取不到想要的对象。
重写了hashcode和equals方法可以迅速的在hashmap中找到键的位置;
1、重写hashcode是为了保证相同的对象会有相同的hashcode;
2、重写equals是为了保证在发生冲突的情况下取得到Entry对象(也可以理解是key或是元素);


Java面试的完整博客目录如下:Java笔试面试目录


转载请标明出处,原文地址:https://blog.csdn.net/weixin_41835916 如果觉得本文对您有帮助,请点击支持一下,您的支持是我写作最大的动力,谢谢。

你可能感兴趣的:(Java笔试面试,Java笔试面试)