前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >hashcode()和equals()和==

hashcode()和equals()和==

原创
作者头像
用户8847707
修改2021-08-12 10:15:18
修改2021-08-12 10:15:18
5800
举报
文章被收录于专栏:mycodemycode

==

==号比较的是两个变量的数值是否相等,比较的是存储在内存里面的数值是否相同

有两种情况

比较两个基本数据类型,直接比较的是值是否相等

比较两个对象,比较的是引用,比较的是内存地址是否相同,引用是否指向同一块内存

===

equals()

equals()是Object提供的方法之一,比较的是两个对象是否相同,比较的也是引用。但是equals方法可以重写覆盖,所以可以通过这样让它比较数据内容,例如String的底层代码就重写了这个方法

public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String aString = (String)anObject; if (!COMPACT_STRINGS || this.coder == aString.coder) { return StringLatin1.equals(value, aString.value); } } return false;}

hashcode()

hashcode()弊端

hashcode并不是唯一的,它是一种算法,让同一个类的对象按照自己的不同特征尽量有不同的哈希码,但是也有相同的情况,这取决于算法的具体实现

hashcode()的意义

hashcode()和equals()相比,效率更高,重写equals方法一般比较复杂,但是hashcode只要一个hash值就可以比较了

与equals()方法对比

在没有刻意修改equals方法的情况下,equals比较相等的对象,hashcode也是一样的

但是hashcode 不是绝对可靠的,可能hashcode相等,但是不equals

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ==
  • equals()
  • hashcode()
    • hashcode()弊端
    • hashcode()的意义
    • 与equals()方法对比
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档