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

java ==和equals和hashCode的区别

作者: 沉淀之际 | 来源:发表于2019-04-23 11:33 被阅读0次

==

基本数据类型的==比较的值相等,类的==比较的内存的地址,即是否是同一个对象

equals

equals是Object类的一个方法,在不覆盖equals的情况下,同比较内存地址,原实现也为 == 。
如String等重写了equals方法,就按自有实现规则来比较是否相等。

hashCode

hashCode也是Object类的一个方法。返回一个离散的int型整数。在集合类操作中使用,为了提高查询速度。(HashMap,HashSet等比较是否为同一个)

hashCode总结

  • 如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。
  • 如果两个对象不equals,他们的hashcode有可能相等。
  • 如果两个对象hashcode相等,他们不一定equals。
  • 如果两个对象hashcode不相等,他们一定不equals。
    注意
    重写了equals方法,一定要重写hashCode方法,否则在使用集合中使用时会出现意想不到的问题,例如:无法去重

相关文章

网友评论

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

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