0%

equals()和==区别

equals()和==区别,为什么重写equal要重写hashcode?

==是运算符 equals()是一个来自于Object的方法

==可以用于基本数据类型和引用

equals只能用于引用类型

== 两端如果是基本数据类型,就是判断值是否相等

equals()再重写之后就是判断两个对象的属性值是否相等

equals如果不重写就是 ==

重写equals可以让我们判断两个对象是否相同

Object中定义的hashcode方法生成的哈希码能保证同一个类的对象的哈希码一定是不同的

当equals 返回为true,我们在逻辑上可以认为是同一个对象,但是查看哈希码,发现哈希码不同,和equals方法的返回值结果违背

Object中定义的hashcode方法生成的哈希码跟对象的本身属性值是无关的

重写hashCode之后我们可以自定义hash值的生成规则,可以通过对象的属性值计算出hash码

HashMap中,借助equals和hashcode方法来完成数据的存储

将根据对象的内容查询转换为索引的查询