在Java中,equals() 是一个方法,用于比较两个对象是否相等。它是 Object 类中定义的方法,在其他类中可以进行重写以实现自定义的相等性比较。
以下是 equals() 方法的常见用法和注意事项:
- 默认的 
equals()方法:equals()方法在Object类中被定义为比较两个对象的引用是否相等。- 默认情况下,
equals()方法与==运算符具有相同的行为,即只有当两个对象的引用指向同一内存地址时才返回true。 - 示例:
obj1.equals(obj2)比较obj1和obj2两个对象的引用是否相等。 
 - 重写 
equals()方法:- 在自定义的类中,可以根据业务需求重写 
equals()方法来实现对象之间的相等性比较。 - 重写后的 
equals()方法应该满足以下条件:- 自反性:
x.equals(x)应该始终返回true。 - 对称性:如果 
x.equals(y)返回true,则y.equals(x)也应该返回true。 - 传递性:如果 
x.equals(y)和y.equals(z)均返回true,则x.equals(z)也应该返回true。 - 一致性:多次调用 
x.equals(y)应该始终返回相同的结果,除非对象的状态发生了变化。 - 非空性:
x.equals(null)应该始终返回false。 
 - 自反性:
 - 示例:重写 
equals()方法来比较自定义类中的特定属性是否相等。 
 - 在自定义的类中,可以根据业务需求重写 
 - 注意事项:
- 如果重写了 
equals()方法,请同时重写hashCode()方法,以保证对象在散列集合(如HashMap、HashSet)中的正确使用。 - 对于数组对象,可以使用 
Arrays.equals()方法来比较元素是否相等。 - 对于字符串对象,应使用 
equals()方法而不是==进行比较,因为equals()比较的是字符串的内容,而==比较的是字符串的引用。 
 - 如果重写了 
 
以下是一个示例,展示了重写 equals() 方法的示范:
public class Person {
    private String name;
    private int age;
    // 构造函数和其他方法省略
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }
}
在上述示例中,我们创建了一个名为 Person 的类,并重写了 equals() 方法。在重写方法中,我们首先判断两个对象的引用是否相等,然后判断传入的对象是否为 Person 类型。最后,我们比较了两个 Person 对象的 name 和 age 属性是否相等。
总结起来,equals() 方法在Java中用于比较两个对象是否相等。可以使用默认的 equals() 方法进行引用相等性比较,也可以根据业务需求重写 equals() 方法来实现自定义的相等性比较。在重写时,需满足一定的条件,并注意与 hashCode() 方法的一致性。

便宜VPS测评











