equals和==都是Java中判断相等的方法,但二者的使用场景有所不同。
==
==一般用于判断基本数据类型值是否相等。
基本数据类型:Byte,short,int,long,float,double,boolean,char。
若用在引用类型上时,会判断引用类型所指向的地址是否相等,只要地址不等即不满足==条件。
可以理解为==比较的是"浅层"的值(地址也是值)。
equals
对于自定义的类,在重写equals方法之前,equals方法继承于Object类,equals方法的作用等价于==,判断的是地址,若使用Java默认的重写equals方法,则会判断类中的各个成员变量的值是否相等,用户也可根据自己需要重写自己的equals方法。
Java中的很多库类都重写了equals方法,例如包装类Integer,重写的equals方法用于判断值而非地址是否相等。
此外,在使用equals方法时要注意避免null引用,例如定义了一个类没有赋值,即null,这时候调用equals方法会报错。若要避免这种错误可使用Objects.equals(A, B)。