equals()方法和==运算符的区别,==运算符用于比较基本类型的值是否相同,或者比较两个对象的引用是否相等,而equals()用于比较两个对象是否相等。

Objects类中的equals方法:

public boolean equals(Object obj){
return (this==obj);
}

可以看到,在Object类中,==运算符和equals方法是等价的,都是比较两个对象的引用是否相等,从另一方面来讲,如果两个对象的引用相等,那么这两个对象一定是相等。

在java规范中,对equals方法的使用必须遵循以下几个原则:

1、自反性:对于任何非空引用值x,x.equals(x)都应该返回true。

2、对称性:对于任何非空引用x和y,当且仅当y.equals(x)返回true时,x.equals(y)才应返回true。

3、传递性:对于任何非空引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(y)应该返回true。

4、一致性:对于任何非空引用x和y,多次调用x.equals(y)始终返回true或者返回false,前提是对象上equals比较中所用的信息没有被修改。

5、对于任何非空引用值x,x.equals(null)都应该返回false。