==
一句话比较的是变量的值是否相等。对于基本数据类型,就是比较数值;对于引用数据类型的变量,比较的是两个储存的地址值是否相同,即是否指向同一块储存空间
equals
Object类中的方法,源码定义中使用“==”运算符,故若没覆盖,就相当于“==”,需要开发人员自己编写equals方法,来判断什么情况可认为“相等”
hashCode
Object类中的一个方法,返回对象在内存中地址转换成的一个int值。
通用约定:
覆盖equals()方法的同时也要覆盖hashCode()方法;约定:如果x.equals(y)返回ture,则hashCode()返回值两者一定相等。
扩展:
在使用HashMap的key时,如果想根据对象的属性来自定义对象是否相等的逻辑,需要重写equals()方法,一旦重写了equals()方法,就必须重写hashCode方法。