demo1 equals 实例化参数内容相同才相等-- 类外对比
class Person {
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
@Override
public String toString(){
return "姓名:" + this.name + ",年龄:" + this.age;
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
public class HelloWorld {
public static void main(String args[]){
Person perA = new Person("张三",22);
Person perB = new Person("张三",22);// 当2个对象实例化内容不同时,equals判断返回false
if(perA.getName().equals(perB.getName()) && perA.getAge().equals(perB.getAge())){
System.out.println("同一个对象");
} else {
System.out.println("不是一个对象");
}
}
}
demo2 类内对比---这个方法,开发中会经常遇到!!!!
class Person {
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
// equals()方法这个时候会有两个对象:当前对象this,传入的Object
public boolean equals(Object obj){
if(!(obj instanceof Person)){//实例类型判断
return false;
}
if(obj == null){
return false;
}
if(obj == this){ //相同地址,则认为是同一个对象
return true;
}
Person per = (Person) obj;// 获取子类中的属性---????
return this.name.equals(per.name) && this.age == per.age;
}
}
public class HelloWorld {
public static void main(String args[]){
Person perA = new Person("张三",22);
Person perB = new Person("张三",22);
System.out.println(perA.equals(perB));
}
}