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方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
spring boot executable jar/war 原理解析
spring boot里其实不仅可以直接以 java -jar demo.jar的方式启动,还可以把jar/war变为一个可以执行的脚本来启动,比如./demo.jar,这篇文章主要介绍了spring boot executable jar/war 原理,需要的朋友可以参考下2023-02-02PowerJob的AbstractScriptProcessor实现类工作流程源码解读
这篇文章主要为大家介绍了PowerJob的AbstractScriptProcessor源码流程解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2024-01-01SpringBoot整合mybatis-plus进阶详细教程
本文主要对mybatis-plus的条件构造器、AR模式、插件、逆向工程、自定义全局操作、公共字段自动填充等知识点进行讲解,需要的朋友参考下吧2021-09-09SpringBoot Validation快速实现数据校验的示例代码
在实际开发中,肯定会经常遇到对参数字段进行校验的场景,通常我们只能写大量的if else来完成校验工作,而如果使用SpringBoot Validation则可以轻松的通过注解来完成,接下来小编给大家介绍下利用SpringBoot Validation快速实现数据校验的示例代码,需要的朋友参考下吧2022-06-06
最新评论