public boolean equals(Object obj) { if (this == obj) // test whether they are same object return true; if (obj == null) // input object is null return false; if (obj instanceof Person) // input object is of type Person { Person p = (Person)obj; // type cassting // compare all the instance variables if (this.name.equals(p.getName())&& this.age == p.getAge()) return true; } return false; }解释
时间: 2024-02-20 11:59:03 浏览: 100
java equals和=,==的区别详细介绍
这个方法是一个 Java 中的 equals 方法的示例,用于比较两个 Person 对象是否相等。方法的实现如下:
1. 首先判断两个对象是否为同一个对象,如果是,则直接返回 true,表示它们相等。
```
if (this == obj)
return true;
```
2. 然后判断输入的对象是否为 null,如果是,则返回 false,表示它们不相等。
```
if (obj == null)
return false;
```
3. 接着判断输入对象是否为 Person 类型的对象,如果不是,则返回 false,表示它们不相等。
```
if (!(obj instanceof Person))
return false;
```
4. 如果输入对象是 Person 类型的对象,则将其转换成 Person 类型,并比较两个对象的 name 和 age 属性是否相等。如果相等,则返回 true,表示它们相等,否则返回 false。
```
Person p = (Person)obj;
if (this.name.equals(p.getName()) && this.age == p.getAge())
return true;
else
return false;
```
需要注意的是,当我们重写 equals 方法时,通常还需要重写 hashCode 方法,以保证当两个对象相等时它们的哈希码也相等。这是因为在使用 HashSet、HashMap 等集合时,会根据对象的哈希码来判断对象是否相等,从而实现去重或查找等功能。如果两个相等的对象的哈希码不同,那么它们就无法正确地被集合识别为相等的对象。
阅读全文