-
作用
1)对于==,比较的是值是否相等
基本数据类型的变量:比较其存储的 “值”是否相等;
引用类型的变量:比较的是所指向的对象的地址
2)对于equals方法,
基本数据类型的变量:equals方法不能作用于基本数据类型的变量
引用类型的变量:若无重写,比较的是所指向的对象的地址 -
重写
equal
,比较两个对象的属性
源码为
public boolean equals(Object obj) {
return super.equals(obj);
}
地址值不同则结果为false
public class equal {
public static void main(String[] args) {
Person one = new Person("张三",20);
Person two = new Person("张三",20);
System.out.println(one.equals(two));
}
}
重写equal
,比较两个对象的属性
@Override
public boolean equals(Object obj) {
Person p = (Person) obj;
return this.name.equals(p.name) && this.age == p.age;
}
属性相同,结果为true
public class equal {
public static void main(String[] args) {
Person one = new Person("张三",20);
Person two = new Person("张三",20);
System.out.println(one.equals(two));
}
}
快捷键
@Override
public boolean equals(Object o) {
if (this == o) return true;
//getClass() != o.getClass()使用反射技术判断o是否为Person类型
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
//Objects.equals(a,b)可以防止a.equals(b)发生空指针异常
}