Java中的hashcode和equals

84 阅读1分钟

关于hashcode

1、hashcode的存在主要是用于查找的快捷性,如Hashtable、HashMap等,hashcode是用来在散列存储结构中确定对象的存储地址的。

2、如果两个对象相同,就是适用于equals(java.lang.Object)方法,那么这两个对象的hashcode方法一定要相同。

3、如果对象的equals方法被重写,那么对象的hashcode方法也尽量重写,并且产生hashcode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点。

4、两个对象的hashcode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object)方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在一个篮子中”。

再次归纳一下就是hashCode是用于查找使用的,而equals是用于比较两个对象是否相等的

关于equals

1、equals和==

  • ==用于比较引用和比较基本数据类型时具有不同的功能:
    比较基本数据类型,如果两个值相同,则结果为true;
    而在比较引用时,如果引用指向内存中的同一对象,结果为true。

2、equals作为方法,实现对象的比较。由于==运算符不允许我们进行覆盖,也就是说它限制了我们的表达,因此我们复写equals()方法,达到比较对象内容是否相同的目的。而这些通过==运算符是做不到的。

3、Object类的equals()方法的比较规则为:如果两个对象的类型一致,并且内容一致,则返回true。