public class Doc {
private String name;
private String id;
private int age;
//重写equals比较两个对象的属性是否相同
public boolean equals(Object obj)
{
//这两个对象是同一个对象,则属性一定相同
if(this==obj)
{
return true;
}
//判断是否为同一个类型,如果不是同一个类型,无需比较属性一定不相同, 且instanceof 比较的是运行类型
if(!(obj instanceof Doc))
{
return false;
}
else //是一个类型才可以比较,进入else后需要向下转型,才可以与同等级别的对象进行比较
{
Doc doc=(Doc) obj;
//比较时字符串类型的equals方法比较的是内容,==对于基本类型来说比较的是值
return this.age==doc.age && this.name.equals(doc.name) && this.id.equals(doc.id);
}
}
}
equals如果不重写,则默认是Object中的方法, 使用时分两种情况:
1.使用equals的对象是字符串String类型或者是包装integer类型,则比较的是两个对象里的内容.
2.如果是其他类型的对象使用equals方法,则比较的就是是否为同一个对象.
重写后, 在测试类当中使用本重写的类 / 它的没有再次重写的子类 创建对象后,使用上面所写代码的equals方法可以实现比较两个对象的属性是否都相同.