1.equalse 函数在什么地方
equalse函数在Object类中,而Object类 是所有类的父类,Object类被包含在jdk中所以说equalse函数存在于所有类中
2.equalse函数的作用
“ == ”是比较两个值是否相等(基本数据类型)
“ == ”的作用是判断两个引用是否指向堆内存中的同一个对象(引用数据类型)
class User{
String name;
int age;
}
class Test{
public static void main(String args[]){
User u1 = new User();
User u2 = new User();
User u3 = u1;
boolean b1 = u1 == u2;
boolean b2 = u1 == u3;
System.out.println(b1);
System.out.println(b2);
}
}
通过结果b1=false;b2=true,可以看出“ == ”的作用是判断两个引用是否指向堆内存中的同一个对象
equalse 是比较两个对象的内容是否相等
什么是对象的内容相等?
通常情况下对象的内容相等需要符合两个条件:
1.对象的类型相同(可以使用instanceof操作符进行比较);
2.两个对象的成员变量的值完全相同;
3.复写equalse函数的方法
public class User
{
String name;
int 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)){
return true;
}
else{
return false;
}
}
else{
return false;
}
}
}
public class Test{
public static void main(String[] args){
User u1 = new User();
User u2 = new User();
User u3 = new User();
u1.name = "zhangsan";
u1.age = 12;
u2.name = "lisi";
u2.age = 12;
u3.name = "zhangsan";
u3.age = 12;
System.out.println(u1.equals(u2));//false
System.out.println(u1.equals(u3));//true
}
}