equals()用来判断两个对象是否相等。equals() 定义在JDK的Object.java中。通过判断两个对象的地址是否相等(即,是否是同一个对象)来区分它们是否相等。
所以,equals()和==的区别是:
==:判断两个对象的地址是否相等。
equals():
- 在没有重写equals()的时候,实际上比较的是两个对象是不是同一个对象。此时,equals()相当于==。
- 在重写了equals()的时候,通过比较重写了的函数判断是否相等。
hashcode()的作用是获取哈希码。哈希码是由对象导出的一个整型值。hashCode() 定义在JDK的Object.java中。
equals()和hashcode()的联系:
如果两个对象equals()相等,那么它们hashCode()值一定相等。
如果两个对象equals()不相等,那么它们hashCode()值不确定,不一定不相等。
如果两个对象hashCode()值相等,那么它们equals()不确定,可能相等可能不相等。
如果两个对象hashCode()值不相等,那么它们equals()一定不相等。