== 可以比较的数据类型:
- 基本数据类型(也称原始数据类型) 应用双等号(==),比较的是他们的值。
- 引用数据类型:当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)。
equals方法可以比较的数据类型:
- 只能比较引用数据类型,在没有重写的情况下默认情况下还是比较数据的内存地址。所以我们要重写该方法。
- JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了
重写equalsf方法主要事项:
- 先判断传入进来的类是是不是自己,是就可以直接返回
- 在判断传入进来的类是不是本类创建对象的。使用 对象名 instanceof 类名 查看。
- 在把类名向下转型,最后在返回比较结果
注意事项:我们一般都使用自动生成的equals 方法
@Override
public boolean equals(Object obj) { // 这是系统自动生成的
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
demo01 other = (demo01) obj;
if (age != other.age)
return false;
return true;
}