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了

 

posted @ 2022-07-04 13:25  一位程序袁  阅读(31)  评论(0编辑  收藏  举报