阅读IDEA生成的equals方法--java进阶day05
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的更多相关文章
- 使用hashCode()和equals()方法 - Java
在这篇文章中,我将指出我对hashCode()和equals()方法的理解.我将讨论它们的默认实现以及如何正确地覆盖它们.我还将使用Apache Commons包中的实用工具类来实现这些方法. has ...
- 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer
1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30; int y=30; x==y; //true 基本数据类型 简单类型(基本类型) bo ...
- Java探索之旅(12)——equals方法及其覆盖
1.Object中的equals方法 java中的的基本数据类型:byte,short,char,int,long,float,double,boolean.==比较的是值. ❶作用:对于复合类型来说 ...
- 为什么要重写hashCode()方法和equals()方法及如何重写
我想写的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法 2.在什么情况下需要重写hashCode()方法和equals()方法 3.如何重写这两个方法 **** ...
- java10-3 equals方法
public boolean equals(Object obj):指示其他某个对象是否与此对象“相等”. 该方法,默认情况下比较的是地址值.但是,如果只是比较地址值的话,一般来说意义不大,所以要 ...
- toString()和equals()方法详解
一:toString()方法 Object中toString方法 public String toString() { return getClass().getName() + "@&qu ...
- Java中“==”与equals方法的区别
1. 用“==”比较两个变量,如果两个变量是基本类型变量,且都是数值类,则值相等就返回true 如果两个变量是引用型变量,则两个对象的地址一样,即指向同一个对象,则返回true 2.equals:St ...
- java重写equals方法
@Override public int hashCode() { return task.getId(); } @Override public boolean equals(Object obj) ...
- JAVA中“==”与equals()方法区别
equals 方法是 java.lang.Object 类的方法 有两种用法说明: ()对于字符串变量来说,使用"=="和"equals()"方法比较字符串时, ...
- Java 中正确使用 hashCode 和 equals 方法
在这篇文章中,我将告诉大家我对hashCode和equals方法的理解.我将讨论他们的默认实现,以及如何正确的重写他们.我也将使用Apache Commons提供的工具包做一个实现. 目录: hash ...
随机推荐
- .NET 中管理 Web API 文档的两种方式
前言 在 .NET 开发中管理 Web API 文档是确保 API 易用性.可维护性和一致性的关键.今天大姚给大家分享两种在 .NET 中管理 Web API 文档的方式,希望可以帮助到有需要的同学. ...
- 微服务实战系列(九)-注册中心与网关高可用架构设计-copy
1. 微服务关系架构图 简要说明: (1)所有应用或者服务要想对外提供服务(包括网关),必须首先到注册中心进行注册. (2)所有访问通过服务网关进行访问,然后由服务网关路由到对应服务中心进行交互访问. ...
- java线程用法和区别
从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列).并且在某一时刻cpu只为ready queue中位于队列头部的线程服务.但是当前正在被服务的线程可能觉得cpu的服务质量不够 ...
- 【java提高】---细则(2)
TreeSet(一) 一.TreeSet定义: 与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的. 1)TreeSet类概述 ...
- 微软宣布更新SymCrypt加密库,新增对PQC算法的支持
转载链接:https://mp.weixin.qq.com/s/aWXzPTWhxFpJVP1s0iwAtw 2024年9月9日,微软(Microsoft)在其博客中宣布,已开始在其开源核心加密库Sy ...
- .Net类型 值类型
预定义类型值类型 数据类型C#关键字(如 int.short 和 string) 从编译器映射到.NET数据类型.例如,在C#中声明一个int类型的数据时声明的实际是.Net System.Int32 ...
- 第11章 其他 XML 技术
第11章 其他 XML 技术 概述 System.Xml 命名空间由以下命名空间和核心类型构成: System.Xml.* XmlReader 和 XmlWriter:高性能.前向读写的 X ...
- 火了整个春节的DeepSeek,他对AI产品的意义到底是什么?
相信春节期间各位的朋友圈一定被DeepSeek"轰炸"了,就算是普通人也获得了一些信息:国内AI取得了巨大突破. 但DeepSeek这次突破到底对一般的互联网从业者有什么帮助,绝大 ...
- Linux mint的hadoop安装方法
参考网址http://www.powerxing.com/install-hadoop/ 1.创建hadoop账户 这条命令创建了可以登陆的 hadoop 用户,并使用 /bin/bash 作为 sh ...
- 0帧起手将腾讯混元大模型集成到Spring AI的全过程解析
在前面,我们已经为大家铺垫了大量的知识点,并深入解析了Spring AI项目的相关内容.今天,我们将正式进入实战环节,从零开始,小雨将带领大家一步步完成将第三方大模型集成到Spring AI中的全过程 ...