equals
== 与 equals(重要)
**==:**判断两个对象是否相等,基本数据类型比较的是数值,引用数据类型是对象地址
equals():判断两个对象是否相等
- 当类没有重写equals() ⽅法。则通过 equals() ⽐较该类的两个对象时,等价于==
- 重写了,如String中equals ⽅法⽐较的是对象的值。若它们的内容相等,则返回 true
hashCode
为什么重写 equals 时必须重写 hashCode⽅法?
hashCode() 的作⽤是获取哈希码,返回一个int整数,确定对象在哈希表中的索引位置
根据哈希码能快速的查询到对象
调用equals方法时会先调用hashCode方法查询是否有相同的对象
如果不同,就不继续调用equals方法。大大的节省了时间
因为两个对象相同,hashcode必定相同
hashcode相同,两个对象不一定相同,但是hashcode不相同,两个对象必不相同
hashcode重写才会让equals重写有意义
因此当重写equals方法时改对象相同方法变为值相同,但是hashcode方法还是确认哈希码,先确认哈希码是否相同,相同在equals,这显然是不会成功的