java 和equals,代码示例

qianduancss

温馨提示:这篇文章已超过239天没有更新,请注意相关的内容是否还可用!

java  和equals,代码示例

Java中的equals方法是用于比较两个对象是否相等的方法。在默认情况下,equals方法比较的是两个对象的引用是否相等,即是否指向同一个内存地址。但是在实际开发中,我们通常需要根据对象的具体属性来判断对象是否相等,这时就需要重写equals方法来实现自定义的相等判断。

重写equals方法需要遵循以下几个原则:

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

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

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

4. 一致性:对于任意非空引用x和y,如果x.equals(y)返回true或false,则多次调用x.equals(y)应该返回相同的结果。

5. 非空性:对于任意非空引用x,x.equals(null)应该返回false。

下面是一个示例代码,演示了如何重写equals方法:

public class Person {

private String name;

private int age;

public Person(String name, int age) {

this.name = name;

this.age = 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);

}

public static void main(String[] args) {

Person person1 = new Person("Alice", 25);

Person person2 = new Person("Bob", 30);

Person person3 = new Person("Alice", 25);

System.out.println(person1.equals(person2)); // false

System.out.println(person1.equals(person3)); // true

}

}

在上面的示例中,我们创建了一个Person类,重写了equals方法。在equals方法中,我们首先判断两个对象是否是同一个引用,如果是,则直接返回true。然后判断传入的对象是否为null或者是否是Person类的实例,如果不满足条件,则返回false。我们比较了两个Person对象的name和age属性是否相等,如果相等则返回true,否则返回false。

在main方法中,我们创建了三个Person对象,分别比较了person1和person2,以及person1和person3的相等性。根据我们重写的equals方法,person1和person2的name和age属性不相等,因此equals方法返回false;而person1和person3的name和age属性相等,因此equals方法返回true。

文章版权声明:除非注明,否则均为莫宇前端原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码