Java 对象比较:== 与 equals 方法

代码示例:

public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.age = age;
        this.name = name;
    }
}

class Deme01 {
    public static void main(String[] args) {

        // 创建两个学生对象
        Student s1 = new Student('itheima', 16);
        Student s2 = new Student('itheima', 16);
// 输出
        System.out.println(s1 == s2);
        System.out.println(s1.equals(s2));
    }
}

输出结果:

false
false

解释:

虽然 s1 和 s2 的属性值相同,但它们是两个不同的对象。

  • == 比较:比较的是对象的内存地址,由于 s1 和 s2 分别指向不同的内存地址,所以结果为 false。

  • equals 比较:默认情况下,equals 方法也比较的是对象的内存地址。由于没有重写 equals 方法,因此结果也为 false。

结论:

如果要比较两个对象的属性值是否相同,需要重写 equals 方法。

代码示例:

public class Student {
    private String name;
    private int age;

    public Student(String name, int age) {
        this.age = age;
        this.name = name;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Student other = (Student) obj;
        return age == other.age && name.equals(other.name);
    }
}
Java 对象比较:== 与 equals 方法

原文地址: https://www.cveoy.top/t/topic/nqv6 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录