equals用于比较两个对象是否相等,默认实现使用==比较地址值。
在开发中要比较两个对象是否相同,经常会根据对象中的字段值进行比较,所以子类经常重写equals方法。例如:String就重写了equals,比较每一个字符是否相同。
再例如:描述人这个类,要求根据年龄判断是否是同龄人
class Person {
int age ;
//复写父类的equals方法,实现自己的比较方式
public boolean equals(Object obj) {
//判断当前调用equals方法的对象和传递进来的对象是否是同一个
if(this == obj){
return true;
}
//判断传递进来的对象是否是Person类型
if(!(obj instanceof Person)){
return false;
}
//将obj向下转型为Perosn引用,访问其属性
Person p = (Person)obj;
return this.age == p.age;
}
}