1.IDEA生成的equals方法

虽然我们之前写了equals方法,但IDEA中可以快速生成equals方法,因此,我们要能看懂IDEA生成的equals方法

1.if(this==o)

2.if(o==null)

我们将第二个if的一大段分为两段进行分析

当代码走到第二个if了,说明stu1肯定不是null,否则就空指针异常,根本不可能走到第二个if

stu1不是null,那就只有stu2可能为null

3.第二个if后半段

第二个if使用的是||,遇真则不再执行后面的内容,当stu2真为null时,就会快速return false

如果stu2不是null,就还会继续执行后半段

后半段的getClass方法来源于Object,用于判断字节码类型

4.向下转型

当代码能走到向下转型时,说明两个对象的字节码相同,对应的类型肯定相同,因此直接转型然后进行比较即可

2.Objects

刚才IDEA生成的equals方法里,比较的时候使用的是Objects的equals方法,所以,我们还需要了解这个类



.

1.Objects.equals

了解了Objects类,我们试着调用它的equals方法

我们发现Objects类调用的equals方法和自己写的equals方法功能是一致的



.

Objects类的equals方法依赖于我们写的equals方法

当我们把自己重写的equals方法删除后,重新调用Objects的equals方法



.

即使两个对象的属性一模一样,但打印结果是false,说明比较的是地址

2.Objects.equals的好处

Objects类的equals方法内部带有非空判断,假设stu1是null,调用了equals方法肯定会引发空指针异常,导致后续的代码逻辑无法运行,但使用Objects的equals方法则不会有这些问题



.

3.Objects.equals的代码逻辑分析

1.(a==b)

2.a!=null

阅读IDEA生成的equals方法--java进阶day05的更多相关文章

  1. 使用hashCode()和equals()方法 - Java

    在这篇文章中,我将指出我对hashCode()和equals()方法的理解.我将讨论它们的默认实现以及如何正确地覆盖它们.我还将使用Apache Commons包中的实用工具类来实现这些方法. has ...

  2. 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer

    1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30;        int y=30;         x==y;  //true 基本数据类型 简单类型(基本类型) bo ...

  3. Java探索之旅(12)——equals方法及其覆盖

    1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说 ...

  4. 为什么要重写hashCode()方法和equals()方法及如何重写

    我想写的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法 2.在什么情况下需要重写hashCode()方法和equals()方法 3.如何重写这两个方法 **** ...

  5. java10-3 equals方法

    public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”.   该方法,默认情况下比较的是地址值.但是,如果只是比较地址值的话,一般来说意义不大,所以要 ...

  6. toString()和equals()方法详解

    一:toString()方法 Object中toString方法 public String toString() { return getClass().getName() + "@&qu ...

  7. Java中“==”与equals方法的区别

    1. 用“==”比较两个变量,如果两个变量是基本类型变量,且都是数值类,则值相等就返回true 如果两个变量是引用型变量,则两个对象的地址一样,即指向同一个对象,则返回true 2.equals:St ...

  8. java重写equals方法

    @Override public int hashCode() { return task.getId(); } @Override public boolean equals(Object obj) ...

  9. JAVA中“==”与equals()方法区别

    equals 方法是 java.lang.Object 类的方法 有两种用法说明: ()对于字符串变量来说,使用"=="和"equals()"方法比较字符串时, ...

  10. Java 中正确使用 hashCode 和 equals 方法

    在这篇文章中,我将告诉大家我对hashCode和equals方法的理解.我将讨论他们的默认实现,以及如何正确的重写他们.我也将使用Apache Commons提供的工具包做一个实现. 目录: hash ...

随机推荐

  1. RPA_Robocorp

    一.RCC使用(https://robocorp.com/docs/rcc/workflow) 1. Creat a new bot :   rcc create my-robot 2. Adding ...

  2. CDS标准视图:催款范围描述 I_DunningAreaText

    视图名称:催款范围描述 I_DunningAreaText 视图类型: 视图代码: 点击查看代码 @EndUserText.label: 'Dunning Area - Text' @Analytic ...

  3. document.querySelector 有多个类 的情况

    document.querySelector 有多个类 document.querySelector 方法用于返回文档中匹配指定 CSS 选择器的第一个元素.如果要查询具有多个类的元素,可以将它们作为 ...

  4. c# yield return

    这个函数在处理循环时可以每生成一个数据就返回一个数据让主函数进行处理: static void Main(string[] args) { foreach (var item in GetNumber ...

  5. 第一个shell脚本(bash脚本)

    首先它是一个脚本,并不能作为正式的编程语言.因为是跑在linux的shell中,所以叫shell脚本.说白了,shell脚本就是一些命令的集合.运维工作中把常用的一系列的操作都记录到一个文档中,然后去 ...

  6. 第三届全国高校计算机能力挑战赛-C

    单项选择题 1.题 (3.0分) 以下叙述正确的是().  A.在C程序,至少要包含一个库函数  B.C程序的一行可以写多条语句  C.对一个C程序进行编译就可以生成可执行文件  D.C程序中的注释只 ...

  7. Hetao P1307 树的剖分 题解 [ 蓝 ] [ 树形 dp ] [ 贪心 ]

    树的剖分:很厉害的性质题,代码也很好写.运用到了奇偶性拼凑答案的 trick. 观察 首先发现一个很重要的条件:一个点的点权只可能是 \(0,1,2\). 这个条件开始我们可能无法用上,于是先想最后的 ...

  8. C#/.NET/.NET Core技术前沿周刊 | 第 25 期(2025年2.1-2.9)

    前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...

  9. RLHF各种训练算法科普

    强化学习在LLM中的应用越来越多了,本文针对常见的几种训练算法,用生活中的例子做类比,帮助理解相关概念. 包括:PPO.DRO.DPO.β-DPO.sDPO.RSO.IPO.GPO.KTO.ORPO. ...

  10. OpenLayers 修改 Feature 的 Style 后不实时更新问题,解决惹~~~

    比如我修改了 字体 feature.getStyle().getText().setFont('12px sans-serif') 地图上没有及时更新,需要缩放或者进行其他操作才可以 这个时候调用 l ...