==与equals的区别(简述)

网友投稿 540 2022-11-01

==与equals的区别(简述)

==与equals的区别(简述)

双等号(==)基本类型判断的是值,引用类型判断是地址且只能是同一类型;equals默认判断使用的是双等号来判断地址值。

通常重写了equals需要重写hashCode,不重写违背了hashCode约定同一对象应返回相同的hash(哈希)值,hashCode默认比较的是地址转为的hash值;不遵守程序并不会因此而不能运行,貌似也没有遵守的必要。

如下代码:只要使用equals判断ID相同就是同一个用户,不重写hashCode调用HashSet的set方法时为2,两个都添加进去了,除了HashSet Java工具类里面还有许多用到hashCode的累

class Demo { public static void main(String[] args) { Member member = new Member(); member.setId(1); Member member1 = new Member(); member1.setId(1); HashSet set = new HashSet<>(); set.add(member); set.add(member1); System.out.println(set.size()); }}@Dataclass Member{ int id; String name; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Member member = (Member) o; return id == member.id; }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:RandomKit一个简便和轻松生成随机数据的Swift框架
下一篇:JDBC获取数据库连接由浅入深
相关文章

 发表评论

暂时没有评论,来抢沙发吧~