Java面试--HashCode

本文探讨了Java面试中常见的关于hashCode的问题,包括其用途、约定、为何需要重写以及在HashMap和HashSet中的作用。强调了当重写equals方法时,必须同时重写hashCode方法以确保对象比较的一致性,并提高数据结构的查找效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试题: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是用于比较两个对象的是否相等的。
四、为什么重写

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北极星小王子

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值