先比较地址值,再判断数据类型,最后比较属性值。
@Override
public boolean equals(Object o) {
//this代表调用对象,o代表比较对象
//1,判断两对象的地址值是否相等,一样返回true,不一样返回false
if (this == o) {
return true;
}
//2,比较数据类型,如果类型不一样,直接返回false
//判断o是否为空,空不相等,返回false , ||:或
//getClass:对象.getclass 返回对象的类型,两者类型不一样,直接返回false
if (o == null || getClass() != o.getClass()){
return false;
}
//3,比较的是属性值,如果属性值相等,返回true
//强制类型转换,为什么强转:去除多态的影响,父类引用指向子类对象
Student student = (Student) o;
// Objects类:工具类,比较属性值 ,&&:且
return age == student.age && Objects.equals(name, student.name);
}