通常比较一个对象或者内容直接通过 ==
、equals
进行比较,默认比较的都是指针地址,但有时候需要比较的是两个对象的内容或者属性值是否一致。
遇到这种需求的时候,要么就是便利比较一下两个对象,或者在对象里面写个比较方法进行判断,其实也是可以重写 Object
自带的 equals
方法来实现的。
Person.java
类对象
public class Person {
// 对象属性
String name;
int age;
// 无参构造函数
public Person () { }
// 有参构造函数
public Person (String name, int age) {
this.name = name;
this.age = age;
}
// 重写 equals 方法
@Override
public boolean equals(Object obj) {
// 默认走指针比较
// return super.equals(obj);
// 自定义对象内容比较
// 是否是同一个对象
if (this == obj) { return true; }
// 是否是同一个类
if (obj == null || getClass() != obj.getClass()) { return false; }
// 转换为同一个类
Person p = (Person)obj;
// 比较内容
if (age != p.age) { return false; }
if (name != p.name) { return false; }
// 返回相同
return true;
}
}
main.java
入口函数
public class test {
public static void main(String[] args) {
// 创建两个对象
Person p1 = new Person();
Person p2 = new Person();
// Person p1 = new Person("dzm", 20);
// Person p2 = new Person("xyq", 20);
// == 比较,比较两个对象的指针地址
System.out.println(p1 == p2);
// equals 比较,默认比较两个对象的指针地址
// System.out.println(p1.equals(p2));
// 如果需要比较两个对象的内容是否一致,可以重写 equals 来实现
System.out.println(p1.equals(p2));
}
}