1、代码
User.java
public class User{
String name;
int age;
public User(String name,int age){
this.name = name;
this.age = age;
}
public boolean equals(Object obj){
if(this == obj)
return true;
boolean b = obj instanceof User;
if(b){
User u = (User)obj;
if(this.age == u.age && this.name.equals(u.name)){//int型可以直接用==判断是否相等,String型复写了equals,所以要用equals去比较是否相等
return true;
}else{
return false;
}
}else{
return false;
}
}
public String toString(){
return "age="+age+",name="+name;
}
}
public class Main{
public static void main(String args[]){
User u1 = new User("lisi",21);
User u2 = new User("lisi",21);
User u3 = u2;
System.out.println(u1.equals(u2));//会调用equals函数来判断,如果没有复写equals函数,默认的equals函数其实就是==
System.out.println(u1==u2);//只会判断两者指向对象的地址是否相同,此时不同
System.out.println(u3==u2);//只会判断两个指向对象的地址是否相同,此时相同
System.out.println(u1);//调用toString
}
}
2、结果
3、解释
判断非引用类型,比如int型,我们可以直接用==。
判断引用类型,==判断是它们所指向对象的地址是不是相同。
判断引用类型,要复写object类的equals方法。