📅  最后修改于: 2023-12-03 15:02:01.996000             🧑  作者: Mango
在Java中,属性(Field)是一个类中的变量,用于存储对象的数据。equals(value)方法用于比较属性的值是否相等。
public boolean equals(Object obj)
示例:假设有以下Person类,其中有name和age两个属性。
public class Person {
private String name;
private int age;
// 构造方法、getter和setter方法
@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);
}
}
在equals方法中,通过实例自便this与参数obj作比较。如果是同一对象,返回true;若参数对象为null或类不一致,返回false;最后比较两个对象属性值是否相等,相等返回true,不相等返回false。
假设有以下代码:
public class EqualsDemo {
public static void main(String[] args) {
Person p1 = new Person("张三", 20);
Person p2 = new Person("张三", 20);
System.out.println(p1.equals(p2)); // true
Person p3 = new Person("李四", 22);
System.out.println(p1.equals(p3)); // false
}
}
通过equals方法比较p1和p2两个对象,返回true。再比较p1和p3两个对象,返回false。
注意:在重写equals方法时,若需要比较属性,需要使用Objects.equals()方法进行比较。此处的Objects是java.util.Objects类,在Java7中新增加的。由于在equals方法中需要频繁的判断null,并进行比较,使用Objects.equals方法可以简化代码,并且更加安全可靠。