• Java Objects类中的 equals方法分析


    一、代码分析

    (一)使用的类

    1. Student类

    2. MethodEquals类


    (二)Student类

    (1)成员变量

    ①姓名(name)

    ②年龄(age)

    ③性别(gender)

    (2)构造器(又称构造方法

    ①说明:快速生成构造方法的快捷键为“Alt + Insert”,后选择“Constructor”。

    ②构造方法的分类:

    a.无参构造函数

    b.有参构造函数

    ③作用:

    用来对对象进行初始化。

    (3)成员方法(重写 Object类的方法)

    ①public String toString()

    a. 快速生成的快捷键为“Alt + Insert”。一般重写父类方法的快捷键为“Ctrl + O”。但这里toString、 equals、hashCode方法的重写一般使用“Alt + Insert”。

    b. toString方法如果没有重写,那么输出一个对象的toString方法,得到的结果是“包名+类名+@+哈希值的16进制”。

    ②public boolean equals(Object o)

    a.快速生成的快捷键为“Alt + Insert

    b.Object类是所有类的父类,因此也称为超类

    c.如果equals方法没有在子类中重写时,主程序中两个对象比较的是“内存地址”。重写后可选择对象比较的属性。

    ③public int hashCode()


    1. //2022.7.26
    2. import java.util.Objects;
    3. public class Student {
    4. private String name;
    5. private int age;
    6. private char gender;
    7. //构造器
    8. public Student() {
    9. }
    10. public Student(String name, int age, char gender) {
    11. this.name = name;
    12. this.age = age;
    13. this.gender = gender;
    14. }
    15. //toString 方法重写
    16. @Override
    17. public String toString() {
    18. return "Student{" +
    19. "name='" + name + '\'' +
    20. ", age=" + age +
    21. ", gender=" + gender +
    22. '}';
    23. }
    24. //重写equals与hascode方法
    25. @Override
    26. public boolean equals(Object o) {
    27. if (this == o) return true;
    28. if (o == null || getClass() != o.getClass()) return false;
    29. Student student = (Student) o;
    30. return age == student.age &&
    31. gender == student.gender &&
    32. name.equals(student.name);
    33. }
    34. @Override
    35. public int hashCode() {
    36. return Objects.hash(name, age, gender);
    37. }
    38. }

    (三)MethodEquals类

    1.  分析

    (1)作用:

    主程序的入口,用来测试equals方法。

    (2)代码分析:

    ①创建了三个学生对象,并进行初始化。

    ②先用“==”比较了两个对象是否相等。注:此处“==”是比较两个对象在内存中的地址是否相等。

    ③后使用equals方法进行比较两个对象是否相等。


    1. //2022.7.26
    2. public class MethodEquals {
    3. public static void main(String[] args) {
    4. Student s1 = new Student("张三", 23, '男');
    5. Student s2 = new Student("张三", 23, '男');
    6. Student s3 = new Student("张三", 26, '男');
    7. //下面这三个比较的是地址
    8. System.out.println(s1 == s2);
    9. System.out.println(s1 == s3);
    10. System.out.println(s2 == s3);
    11. //使用equals方法进行比较
    12. System.out.println(s1.equals(s2));
    13. System.out.println(s1.equals(s3));
    14. }
    15. }

    二、运行结果

    可知,equals方法重写后,比较的是重写方法中两个对象 的属性值。

  • 相关阅读:
    接口自动化测试数据驱动DDT模块使用
    Mybatis的动态SQL和分页
    加快make编译速度的另一种方法
    React中路由操作、页面跳转
    SAP MASS增加PR字段-删除标识
    出海 SaaS 企业增长修炼手册:聊聊 PLG 的关键指标、技术栈和挑战
    正则表达式入门教程
    ASEMI肖特基二极管MBR30200PT图片,MBR30200PT规格书
    思腾云计算
    英伟达DeepStream学习笔记47——deepstream sdk安装
  • 原文地址:https://blog.csdn.net/weixin_51733609/article/details/125997622