hashcode和equals用来标识对象 hashcode和equals

综合精选 2023-11-17 06:58:02
导读 大家好,我是小典,我来为大家解答以上问题。hashcode和equals用来标识对象,hashcode和equals,很多人还不知道,现在让我们一起来看看吧!...
2023-11-17 06:58:02

大家好,我是小典,我来为大家解答以上问题。hashcode和equals用来标识对象,hashcode和equals,很多人还不知道,现在让我们一起来看看吧!

1、这个从头说起:

2、在JAVA中利用"=="比较变量时,系统使用变量在"栈"中所存的值作为比较的依据。

3、基本数据类型在"栈"中存的是其内容值,

4、对象类型在"栈"中存的是地址,这些地址指向"堆"中的对象。

5、java.lang包中的Object类有public boolean

6、equals(Object obj)方法,它比较两个对象是否相等。

7、其它对象的equals方法仅当被比较的两个引用指向的对象内容相同时,对象的equals()方法返回true。

8、Hash散列算法,先获取key的hashCode值,通过hash算法确定将要存储的空间(bucket)。同理,获取key的hashCode值,通过hash算法确定要检索的空间。调用 equals方法依次和bucket中的Key比较。

9、key的hashCode()方法的返回值对HashMap存储元素时起着很重要的作用。hashCode()是在Object中定义的,而Object的equals方法等同于==,因此应妥善重写该方法。

10、重写hashCode方法应注意:与equals方法的一致性,即两个对象equals方法比较结果为true,则hashCode方法返回值应相同。hashCode返回的数值应符合hash算法的要求。

11、对于一个类如果重写了其equals方法,则必须重新hashCode方法,否则在应用hashmap时会出现各种错误。

12、在对象没有改变的情况下,多次调用hashCode方法返回值应该是相同数字。

本文到此讲解完毕了,希望对大家有帮助。

免责声明:本文由用户上传,如有侵权请联系删除!