Objdct中的equals方法、 Object中的重写方法
Objdct中的equals方法
Person类默认继承了Object那么我们可以使用equals方法
equals指示其他某个对象是否与此对象相等
案例来看一下:
public class Test {
public static void main(String[] args) {
Person person = new Person("大傻",45);
Person person1 = new Person("傻妞",18);
// 我们判断person 和person1 是否相同
boolean equals = person.equals(person1);
System.out.println(equals);
}
}
在测试类中创建了2个对象,使用equals方法是否相同
可以看见 返回值的类型 是boolean类型的 那么返回的就是 false ture
如果不相同就返回 false 相同就返回 tuer
我们来看下结果
返回了一个fasle 不相同
我们在把两个值都改成一样的 测试一下
public class Test {
public static void main(String[] args) {
Person person = new Person("大傻",45);
Person person1 = new Person("大傻",45);
// 我们判断person 和person1 是否相同
boolean equals = person.equals(person1);
System.out.println(equals);
}
}
现在我们改成相同的了 看一下结果
我们看到还是false 那是为什么呢
我们把地址打印出来看一下
可以看出 两个地址不相同 那么要怎么让他们相同呢
我们需要把值 设置为相同的
person=person1;
那么我们在来看
变成了ture
Object中的重写方法
刚才我们判断的时候可以看出地址在不相同的话 是判断为fasle的
当然我们刚才给对象和对象2进行了一下赋值
那么还有一种方法
就是重写Object方法
我们要在实体类中 写一个重写的方法
使用的idea的话 在实体类写一个eq 他会自己显示出来
那么我们选中这个方法
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
这个我们在来测试
public class Test {
public static void main(String[] args) {
Person person = new Person("大傻",45);
Person person1 = new Person("大傻",45);
// 我们判断person 和person1 是否相同
boolean equals = person.equals(person1);
System.out.println(equals);
}
}
最后就为ture了