重写equals方法

equals方法

在Java中,equals()方法是用于比较两个对象是否相等的方法。这个方法定义在Object类中,因此所有的Java类都继承了equals()方法。

方法签名:public boolean equals(Object obj) 这个方法接受一个Object类型的参数,并返回一个布尔值,表示两个对象是否相等。

在Object类中,默认的equals()方法实现是比较两个对象的引用是否相等,即比较对象的内存地址。这相当于使用==运算符进行比较。

很多情况下,我们需要自定义类的equals()方法来比较对象的内容是否相等,而不仅仅是比较引用。为了实现自定义的相等比较逻辑,通常需要重写equals()方法。

定义类,并重写该类的equals() 方法,测试效果。

可以使用IDE提供的工具快捷创建equals方法。

案例示意代码如下:

 
  1. package api_01;
  2. import java.util.Objects;
  3. public class Person {
  4. String name;
  5. int age;
  6. public Person(String name, int age) {
  7. this.name = name;
  8. this.age = age;
  9. }
  10. @Override
  11. public boolean equals(Object o) {
  12. // 如果对象地址一样,则认为相同
  13. if (this == o) return true;
  14. // 如果参数为空,或者类型信息不一样,则认为不同
  15. if (o == null || getClass() != o.getClass()) return false;
  16. // 转换为当前类型
  17. Person person = (Person) o;
  18. // 要求基本数据类型的属性的值相等
  19. // 并且将引用类型交给java.util.Objects类的equals静态方法判断
  20. return age == person.age && Objects.equals(name, person.name);
  21. }
  22. @Override
  23. public String toString() {
  24. return "Person{" +
  25. "name='" + name + '\'' +
  26. ", age=" + age +
  27. '}';
  28. }
  29. }
  30. package api_01;
  31. public class EqualsDemo {
  32. public static void main(String[] args) {
  33. // 未重写equals方法的示例
  34. Student s1 = new Student("Jerry",18);
  35. Student s2 = new Student("Jerry",18);
  36. System.out.println("s1 equals s2 ? "+s1.equals(s2));
  37. // 重写equals方法后的示例
  38. Person p1 = new Person("Tom",22);
  39. Person p2 = new Person("Tom",22);
  40. System.out.println("p1 equals p2 ? "+p1.equals(p2));
  41. }
  42. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值