获得徽章 0
赞了这篇沸点
equals和==区别?为什么重写equals要重写hashcode?
1)来源上:==是运算符,equals是Object类定义的一个方法;
使用上:==可用于比较基本数据类型和引用类型,equals只能用于引用类型;
==两端如果是基本数据类型,就是判断值是否相同。equals如果不重写,其实就是==,重写的话可以根据属性值来判断对象是否相同。
2)重写equals可以让我们自己定义判断两个对象是否相同的条件。Object类中定义的hashcode方法生成的hash码使得同一个类的对象的哈希码是不同的。当equals返回为true,逻辑上认为是同一个对象,查看hash码是不同的,和equals返回的结果相违背。
Object中定义的hashcode方法生成的hash码跟对象的本身属性值是无关的,重写hashcode之后,可以自定义hash码的生成规则,可以通过对象的属性值计算出hash码。
hashmap中,借助equals和hashcode方法来完成数据的存储。将根据对象的内容查询转换成根据索引的查询。
1)来源上:==是运算符,equals是Object类定义的一个方法;
使用上:==可用于比较基本数据类型和引用类型,equals只能用于引用类型;
==两端如果是基本数据类型,就是判断值是否相同。equals如果不重写,其实就是==,重写的话可以根据属性值来判断对象是否相同。
2)重写equals可以让我们自己定义判断两个对象是否相同的条件。Object类中定义的hashcode方法生成的hash码使得同一个类的对象的哈希码是不同的。当equals返回为true,逻辑上认为是同一个对象,查看hash码是不同的,和equals返回的结果相违背。
Object中定义的hashcode方法生成的hash码跟对象的本身属性值是无关的,重写hashcode之后,可以自定义hash码的生成规则,可以通过对象的属性值计算出hash码。
hashmap中,借助equals和hashcode方法来完成数据的存储。将根据对象的内容查询转换成根据索引的查询。
展开
4
3
赞了这篇文章