当前位置:首页-视频-Java9_day01-正文

03_Object类的equals方法_Java9_day01

1.3 equals方法

方法摘要

  • public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。

调用成员方法equals并指定参数为另一个对象,则可以判断这两个对象是否是相同的。这里的“相同”有默认和自定义两种方式。

默认地址比较

如果没有覆盖重写equals方法,那么Object类中默认进行 == 运算符的对象地址比较,只要不是同一个对象,结果必然为false。

对象内容比较

如果希望进行对象的内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法。例如:

import java.util.Objects;

public class Person {

private String name;

private int age;

@Override

public boolean equals(Object o) {

// 如果对象地址一样,则认为相同

if (this == o)

return true;

// 如果参数为空,或者类型信息不一样,则认为不同

if (o == null || getClass() != o.getClass())

return false;

// 转换为当前类型

Person person = (Person) o;

// 要求基本类型相等,并且将引用类型交给java.util.Objects类的equals静态方法取用结果

return age == person.age && Objects.equals(name, person.name);

}

}

这段代码充分考虑了对象为空、类型一致等问题,但方法内容并不唯一。大多数IDE都可以自动生成equals方法的代码内容。在IntelliJ IDEA中,可以使用 Code 菜单中的 Generate… 选项,也可以使用快捷键 alt+insert ,并选择 equals() and hashCode() 进行自动代码生成。如下图所示:

03_Object类的equals方法_Java9_day01 - 第1张

03_Object类的equals方法_Java9_day01 - 第2张

03_Object类的equals方法_Java9_day01 - 第3张

tips:Object类当中的hashCode等其他方法,今后学习。