📜  用示例列出Java中的 equals() 方法(1)

📅  最后修改于: 2023-12-03 15:27:13.339000             🧑  作者: Mango

Java中的equals()方法

在Java中,equals()方法用于比较两个对象是否相等。它是Object类的一个方法,子类可以选择覆盖它来提供更精细的相等评估。

语法

以下是equals()方法的语法:

public boolean equals(Object obj)
实现equals()方法的原则

在编写equals()方法之前,需要理解以下原则:

  1. 自反性:对于任意非null的引用值x,x.equals(x)应该返回true。

  2. 对称性:对于任意非null的引用值x和y,如果x.equals(y)返回true,则y.equals(x)也应该返回true。

  3. 传递性:对于任意非null的引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)也返回true,则x.equals(z)也应该返回true。

  4. 一致性:对于任意非null的引用值x和y,只要equals()方法中所用的信息没有被修改,无论调用x.equals(y)多少次,都应该返回true或者false。

  5. 非空性:对于任意非null的引用值x,x.equals(null)必须返回false。

实现equals()方法需要满足以上原则。

示例

以下是一个示例,演示如何实现自定义类的equals()方法。

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

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

    public boolean equals(Object obj) {
        if (obj == this) return true;

        if (!(obj instanceof Person)) return false;

        Person otherPerson = (Person) obj;

        return this.name.equals(otherPerson.name) && this.age == otherPerson.age;
    }
}

public class Demo {
    public static void main(String[] args) {
        Person p1 = new Person("John", 30);
        Person p2 = new Person("John", 30);
        Person p3 = new Person("Mary", 25);

        System.out.println(p1.equals(p2)); // true
        System.out.println(p1.equals(p3)); // false
    }
}

在上面的例子中,我们创建了一个自定义类Person,并覆盖了它的equals()方法。然后,在main()方法中创建了三个Person对象,并比较它们之间的相等性。

在equals()方法中,首先处理了自反性的情况,如果obj引用了this对象,直接返回true。然后判断obj是否是Person类的实例,如果不是,返回false。最后,比较name和age两个属性的值,如果相等,返回true,否则返回false。

总结

equals()方法在Java中非常重要,因为它们可以用来比较不同对象之间的相等性。当编写自定义类时,需要实现equals()方法,以便可以根据对象的属性来比较它们的相等性。在实现equals()方法时,需要注意满足原则。