equals (public boolean equals(Object obj))
指示其他某个对象是否与此对象“相等”。
-
equals
方法在非空对象引用上实现相等关系:- 自反性:对于任何非空引用值
x
,x.equals(x)
都应返回true
。 - 对称性:对于任何非空引用值
x
和y
,当且仅当y.equals(x)
返回true
时,x.equals(y)
才应返回true
。 - 传递性:对于任何非空引用值
x
、y
和z
,如果x.equals(y)
返回true
,并且y.equals(z)
返回true
,那么x.equals(z)
应返回true
。 - 一致性:对于任何非空引用值
x
和y
,多次调用 x.equals(y) 始终返回true
或始终返回false
,前提是对象上equals
比较中所用的信息没有被修改。 - 对于任何非空引用值
x
,x.equals(null)
都应返回false
。
Object
类的 equals 方法实现对象上差别可能性最大的相等关系;即,对于任何非空引用值x
和y
,当且仅当x
和y
引用同一个对象时,此方法才返回true
(x == y
具有值true
)。注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。
参数:
- 自反性:对于任何非空引用值
obj
- 要与之比较的引用对象。- 返回:
- 如果此对象与 obj 参数相同,则返回
true
;否则返回false
。 - 举个例子:
-
package toString; public class RabbitEqualsTest { public String name; public String furcolor; public int age; //构造RabbitEqualsTest 重载 public RabbitEqualsTest(int i){ super(); this.age=i; } public RabbitEqualsTest(String name, String furcolor, int age) { super(); this.name = name; this.furcolor = furcolor; this.age = age; } //equals方法重写 public boolean equals (Object obj){ if(obj==null) { return false; }else{ if(obj instanceof RabbitEqualsTest){ RabbitEqualsTest rabbit = (RabbitEqualsTest)obj; //将obj强制转换为RabbitEqualsTest if(this.age==rabbit.age &&this.name==rabbit.name &&this.furcolor==rabbit.furcolor){ return true; } } } return false; } }
package toString; public class RabbitEqualsMain {
public static void main(String[] args) { //实例化RabbitEqualsTest RabbitEqualsTest r1= new RabbitEqualsTest("小灰","白色",3); RabbitEqualsTest r2= new RabbitEqualsTest("小灰","白色",3); RabbitEqualsTest r3= new RabbitEqualsTest(4); System.out.println(r1==r2); System.out.println(r1.equals(r2)); } }结果为:false true