==
基本数据类型的==比较的值相等,类的==比较的内存的地址,即是否是同一个对象
equals
equals是Object类的一个方法,在不覆盖equals的情况下,同比较内存地址,原实现也为 == 。
如String等重写了equals方法,就按自有实现规则来比较是否相等。
hashCode
hashCode也是Object类的一个方法。返回一个离散的int型整数。在集合类操作中使用,为了提高查询速度。(HashMap,HashSet等比较是否为同一个)
hashCode总结
- 如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。
- 如果两个对象不equals,他们的hashcode有可能相等。
- 如果两个对象hashcode相等,他们不一定equals。
- 如果两个对象hashcode不相等,他们一定不equals。
注意
重写了equals方法,一定要重写hashCode方法,否则在使用集合中使用时会出现意想不到的问题,例如:无法去重