美文网首页
java中==和equals和hashCode的区别

java中==和equals和hashCode的区别

作者: wayne777 | 来源:发表于2020-05-07 18:11 被阅读0次

“==”:

  ==是运算符,用来    比较两个值是否相等(基本数据类型)、比较两个对象的内存地址是否相等(对象);

“equals()”:

  equals是Object类的方法,默认情况下比较两个对象是否是同一个对象(内存地址是否相等),内部实现是通过“==”来实现的。

如果想比较两个对象的其他内容,则可以通过重写equals方法,

例如:String类就重写了equals方法,改成了对象的内容是否相等。

“hashCode()”:

  hashCoed也是Object类里面的方法,返回值是一个对象的哈希码,同一个对象哈希码一定相等,但不同对象哈希码也有可能相等。

如果两个对象通过equals方法比较相等,那么他的hashCode一定相等;

如果两个对象通过equals方法比较不相等,那么他的hashCode有可能相等;

例如以下程序:

class Untitled {

    publicstaticvoid main(String[] args) {

        System.out.println("AaAa".hashCode());//2031744

        System.out.println("BBBB".hashCode());//2031744  

     }

}

!在每个覆盖了equals方法的类中,也必须覆盖hashCode方法,如果不这样做的话,就会违反Object.hashCode的通用约定。从而导致该类无法结合所有基于散列的集合一起正常运作。

相关文章

网友评论

      本文标题:java中==和equals和hashCode的区别

      本文链接:https://www.haomeiwen.com/subject/afxzghtx.html