hashcode和equals的关系
1个回答
展开全部
hashcode和equals的关系如下:
hashCode()方法是获取一串整数,我们称之为哈希码。默认情况下,是Object类里面的一个native方法,由jvm实现,其作用是标识一个唯一的对象(注意:这个hash码在无锁状态下存储于对象头中)
equals()方法是比较两个对象是否相等。默认情况下比较两个对象的在内存的地址值,和==等价。不过,我们一般都会重写这个方法来达到我们想要的对象相等的效果。
这两个方法一个标识唯一对象,一个标识对象内存地址,描述两个不同维度信息好像没有什么关系?
目前为止确实是这样,但是在Map实现类中,计算hash值的扰动函数是依赖hashcode,如果只重写equals的话,那么会导致相同对象的生成的key值不一样
所以,需要重写一般重写equals的时候,都会要求重写hashCode方法,避免出现这样的bug。
总结:hashCode和equals没有什么关系,不过一般重写equals的时候会强制要求重写hashCode避免出bug。
Storm代理
2023-07-25 广告
2023-07-25 广告
StormProxies是一家可靠的代理服务提供商,提供原生IP(住宅原生IP)和高匿名代理服务。以下是关于StormProxies的原生IP服务的一些信息:1. 住宅原生IP:StormProxies提供的住宅原生IP是指从真实的家庭或企...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询