equals方法
在Java中,equals()方法是用于比较两个对象是否相等的方法。这个方法定义在Object类中,因此所有的Java类都继承了equals()方法。
方法签名:public boolean equals(Object obj) 这个方法接受一个Object类型的参数,并返回一个布尔值,表示两个对象是否相等。
在Object类中,默认的equals()方法实现是比较两个对象的引用是否相等,即比较对象的内存地址。这相当于使用==运算符进行比较。
很多情况下,我们需要自定义类的equals()方法来比较对象的内容是否相等,而不仅仅是比较引用。为了实现自定义的相等比较逻辑,通常需要重写equals()方法。
定义类,并重写该类的equals() 方法,测试效果。
可以使用IDE提供的工具快捷创建equals方法。
案例示意代码如下:
- package api_01;
- import java.util.Objects;
- public class Person {
- String name;
- int age;
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
- @Override
- public boolean equals(Object o) {
- // 如果对象地址一样,则认为相同
- if (this == o) return true;
- // 如果参数为空,或者类型信息不一样,则认为不同
- if (o == null || getClass() != o.getClass()) return false;
- // 转换为当前类型
- Person person = (Person) o;
- // 要求基本数据类型的属性的值相等
- // 并且将引用类型交给java.util.Objects类的equals静态方法判断
- return age == person.age && Objects.equals(name, person.name);
- }
- @Override
- public String toString() {
- return "Person{" +
- "name='" + name + '\'' +
- ", age=" + age +
- '}';
- }
- }
- package api_01;
- public class EqualsDemo {
- public static void main(String[] args) {
- // 未重写equals方法的示例
- Student s1 = new Student("Jerry",18);
- Student s2 = new Student("Jerry",18);
- System.out.println("s1 equals s2 ? "+s1.equals(s2));
- // 重写equals方法后的示例
- Person p1 = new Person("Tom",22);
- Person p2 = new Person("Tom",22);
- System.out.println("p1 equals p2 ? "+p1.equals(p2));
- }
- }