/*
*比较过程思路:
*1、两个对象指向位置相同,那么他们就相等,return后跳出函数,不再往下执行
*2、指向位置不同,有3情况
*a:这两对象类型相同,并且内容相同,也属于相等
*b:类型相同,内容不同,属于不等;
*c:类型不同,属于不等
*/
class ObjectEquals{
public static void main(String[]args){
Person p1 = new Person(4);
Person p2 = new Person(4);
System.out.println(p1.equals(p2));
}
}
class Person{
private int age;
public Person(int age){
this.age = age;
}
public boolean equals(Object obj){
//内存地址相同,返回true不再执行
if(this == obj)
return true;
//位置不同,类型相同
if(obj instanceof Person){
Person p = (Person)obj;//多态,向下转型,父类对象引用子类特有对象时,应向下转型
return this.age == p.age;
}
//位置不同,类型不同,返回false
else
return false;
}
}
转载于:https://blog.51cto.com/9274590/1763370