摘要:方法提供了对象的值,是一个方法,返回的默认值与一致。通常这个值是对象头部的一部分二进制位组成的数字,具有一定的标识对象的意义存在,但绝不定于地址。与的关系相等两个对象,则一定要相等。
Java基础系列
Java的hashcode与equals方法
Java类初始化顺序
ThreadPoolExecutor线程池如何弹性伸缩
HashMap的几个要点
Integer的缓存
什么场景下使用阻塞队列
volatile的使用及DCL模式
try-catch-finally中的return
序Java基础的东东,hashcode和equals方法的区别。
hashcodehashcode()方法提供了对象的hashCode值,是一个native方法,返回的默认值与System.identityHashCode(obj)一致。
通常这个值是对象头部的一部分二进制位组成的数字,具有一定的标识对象的意义存在,但绝不定于地址。
作用是:用一个数字来标识对象。比如在HashMap、HashSet等类似的集合类中,如果用某个对象本身作为Key,即要基于这个对象实现Hash的写入和查找,那么对象本身如何实现这个呢?就是基于hashcode这样一个数字来完成的,只有数字才能完成计算和对比操作。
hashcode是否唯一hashcode只能说是标识对象,在hash算法中可以将对象相对离散开,这样就可以在查找数据的时候根据这个key快速缩小数据的范围,但hashcode不一定是唯一的,所以hash算法中定位到具体的链表后,需要循环链表,然后通过equals方法来对比Key是否是一样的。
equals与hashcode的关系equals相等两个对象,则hashcode一定要相等。但是hashcode相等的两个对象不一定equals相等。
小结hashcode是为了算法快速定位数据而存在的,而equals是为了对比真实值而存在的。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/65552.html
摘要:如果根据方法得到两个对象不相同,那么两个对象的方法的结果不一定不相同,我们可以利用这一点来提高散列表的性能。最后回到文章开头的问题,如何判断两个对象或值是否相同这个问题其实有两方面的含义,一方面是判断的方法,另一方面是判断的效率。 Java中有很多场景需要判断两个对象或者两个值,那么 判断是否相同的依据是什么? 如何判断是否相同呢? 为了解释这个问题,我们从Java语言的根说起,那...
摘要:所以在对象没有重写这个方法时,默认使用此方法,即比较对象的内存地址值。结果为可以发现不管对象的内存地址是否相同并不影响其结果,所以类型比较的是数据值而不是内存地址值。 showImg(https://segmentfault.com/img/bVbqpku?w=800&h=344); 今天朋友突然问到一个问题: 两个对象使用x.equals(y)判断结果为true时,两个对象的hash...
摘要:简单的一句话结论就是保证你定义的的对象拥有相同的。方法实现等价关系自反性。即一个对象必须等于其自身。对于任意引用值和返回真时,也一定为真传递性。发现一样,调用方法继续比较,发现个对象一样。 简单的一句话结论就是:保证你定义的equal的对象拥有相同的hash code。1)两个对象equals()为真,则它们的hashCode() 一定相同2)两个对象hashCode()相同,equa...
摘要:判断另外一个对象是否与当前对象相等返回当前对象的哈希值返回一个表示当前对象的字符串唤醒一个等待当前对象的锁监视器的线程。 原文链接:http://www.javacodegeeks.com/2015/09/using-methods-common-to-all-objects.html 本文是Java进阶课程的第二篇。 本课程的目标是帮你更有效的使用Java。其中讨论了一些高级主题,包...
阅读 1980·2021-11-19 11:37
阅读 545·2021-11-11 16:54
阅读 1119·2021-11-02 14:44
阅读 2960·2021-09-02 15:40
阅读 2317·2019-08-30 15:44
阅读 906·2019-08-29 11:17
阅读 1028·2019-08-26 14:06
阅读 1517·2019-08-26 13:47