hashcode和equals用来标识对象 hashcode和equals
大家好,我是小典,我来为大家解答以上问题。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方法返回值应该是相同数字。
本文到此讲解完毕了,希望对大家有帮助。