- 通常比较一个对象或者内容直接通过
==
、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)); } }