Java如何重写object类的equals方法详解

 更新时间:2020年12月20日 16:06:28   作者:咯咯笑的大老虎  
这篇文章主要给大家介绍了关于Java如何重写object类的equals方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.Object类的equals()方法:

比较两个对象是否是同一个对象,equals() 方法比较两个对象,是判断两个对象引用指向的是同一个对象,即比较 2 个对象的内存地址是否相等。是则返回true

Object类是所有类的父类,它的equals方法自然会被所有类继承,有一个子 类String对equals方法进行了覆盖(重写),使其具有了新功能

2.Object类的equals()方法与==没区别

Java.lang.String重写了equals()方法,把equals()方法的判断变为了判断其值

当有特殊需求,如认为属性相同即为同一对象时,需要重写equals()

在这里插入图片描述

总结:

1.基本数据类型数据值只能用

2.对于引用数据类型,和Object的equals方法是一样的。(查看源码)

由于String类对父类Object的equals方法的重写,导致equals与= =唯一的区别在于比较对象

例题 :

重写比较规则,判断两名学员(Student)是否为同一对象

Student相关属性

Id(学号)、name(姓名)、age(年龄)

如果两名学员的学号以及姓名相同,则为同一对象

在这里插入图片描述

1 对 Student类进行封装 然后在里面重写equals方法

方法代码:

public class Student {
 private int id;
 private String name;
 private int age;

 @Override //重写equals方法
 public boolean equals(Object obj) {
 if(obj instanceof Student){
  Student s1=(Student)obj;
  return this.id==s1.id&&this.name==s1.name&&this.age==s1.age;
 }else {
  System.out.println("错误");
  return false;
 }
 }

 public Student(int id, String name, int age) {
 this.id = id;
 this.name = name;
 this.age = age;
 }

 public int getId() {
 return id;
 }

 public void setId(int id) {
 this.id = id;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public int getAge() {
 return age;
 }

 public void setAge(int age) {
 this.age = age;
 }
}

测试类进行测试

 public static void main(String[] args) {
 Student s1 = new Student(1,"张三",18);
 Student s2 = new Student(1,"张三",18);

 Student s3 = new Student(1,"张三",18);
 Student s4 = new Student(1,"张三",20);

 System.out.println(s1.equals(s2));

 System.out.println(s3.equals(s4));



 }

以上程序执行结果

在这里插入图片描述

 

到此这篇关于Java如何重写object类的equals方法的文章就介绍到这了,更多相关Java重写object类的equals方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot后端解决跨域问题的3种方案分享

    SpringBoot后端解决跨域问题的3种方案分享

    这篇文章主要给大家分享介绍了关于SpringBoot后端解决跨域问题的3种方案,跨域指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器施加的安全限制,需要的朋友可以参考下
    2023-07-07
  • Java运用设计模式中的建造者模式构建项目的实例解析

    Java运用设计模式中的建造者模式构建项目的实例解析

    这篇文章主要介绍了Java运用设计模式中的建造者模式构建项目的实例解析,建造者模式对外隐藏创建过程的产品,使用组合的方式,由指挥者来决定建造的流程,需要的朋友可以参考下
    2016-04-04
  • 解决IDEA无法下载maven依赖的问题

    解决IDEA无法下载maven依赖的问题

    这篇文章主要介绍了解决IDEA无法下载maven依赖的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Spring Batch远程分区的本地Jar包模式的代码详解

    Spring Batch远程分区的本地Jar包模式的代码详解

    这篇文章主要介绍了Spring Batch远程分区的本地Jar包模式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • springboot自动重启的简单方法

    springboot自动重启的简单方法

    Springboot提供了热部署的方式,当发现任何类发生了改变,马上通过JVM类加载的方式,加载最新的类到虚拟机中。这篇文章主要介绍了springboot自动重启的实现方法,需要的朋友可以参考下
    2018-04-04
  • SpringBoot整合阿里云开通短信服务详解

    SpringBoot整合阿里云开通短信服务详解

    这篇文章主要介绍了如何利用SpringBoot整合阿里云实现短信服务的开通,文中的示例代码讲解详细,对我们学习有一定帮助,需要的可以参考一下
    2022-03-03
  • java List集合去除null的4种方法

    java List集合去除null的4种方法

    这篇文章主要给大家介绍了java List集合去除null的3种方法,文中通过代码示例将每种方法都介绍的非常详细,对大家学习或者使用Java具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • 使用java为pdf添加书签的方法(pdf书签制作)

    使用java为pdf添加书签的方法(pdf书签制作)

    下载一些pdf格式的电子书没有书签,用JAVA写了一个小工具,将特定格式的文本解析成为书签,然后保存到pdf格式中
    2014-02-02
  • 浅谈Java分布式架构下如何实现分布式锁

    浅谈Java分布式架构下如何实现分布式锁

    这篇文章主要介绍了浅谈Java分布式架构下如何实现分布式锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Java 根据XPATH批量替换XML节点中的值

    Java 根据XPATH批量替换XML节点中的值

    这篇文章主要介绍了Java根据XPATH批量替换XML节点中的值,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09

最新评论