Objects.equals(a, b)

今天使用idea自动生成重写的equals()方法时,发现自动生成的重写是

@Override
public boolean equals(Object o) {       if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Pets pets = (Pets) o;return age == pets.age &&health == pets.health &&Objects.equals(name, pets.name) &&Objects.equals(type, pets.type);
}

比较好奇Objects.equals(a, b)和a.equals(b)的区别

1. 值是null的情况:

  1. a.equals(b), a 是null, 抛出NullPointException异常。

  2. a.equals(b), a不是null, b是null, 返回false

  3. Objects.equals(a, b)比较时, 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。注意:不会抛出空指针异常。

null.equals(“abc”)  → 抛出 NullPointerException 异常
“abc”.equals(null)  → 返回 false
null.equals(null)  → 抛出 NullPointerException 异常

Objects.equals(null, “abc”)   → 返回 false false ||(false && 短路不执行)
Objects.equals(“abc”,null)    → 返回 false false ||(true && false)
Objects.equals(null, null)     → 返回 true true || 短路不执行

2.Objects.equals(a, b)的源码:

    public static boolean equals(Object a, Object b) {return (a == b) || (a != null && a.equals(b));}

3.说明

首先,进行了对象地址的判断,如果是真,则不再继续判断。

如果不相等,后面的表达式的意思是,先判断a不为空,然后根据上面的知识点,就不会再出现空指针。

所以,如果都是null,在第一个判断上就为true了。如果不为空,地址不同,就重要的是判断a.equals(b)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 薪资降温?不存在的

当你学习编程时,最先被困扰在哪一步?是不是很容易陷入在语法之类的细节而忽视基础概念?解决当前任务的最佳方法是什么?在多种编程语言之间来回切换,却感觉不到效率的提高?0 基础学习编程,最先入…

隐私与AI兼得,蚂蚁金服是如何做到的?

蚂蚁金服在过去十五年重塑支付改变生活,为全球超过十二亿人提供服务,这些背后离不开技术的支撑。在 2019 杭州云栖大会上,蚂蚁金服将十五年来的技术沉淀,以及面向未来的金融技术创新和参会者分享。我们将其中的优秀演讲整理成文并…

Nacos配置中心规范

文章目录一、版本选取和概念理解1. 版本选择2.Namespace3. 如何进行配置和服务的管理、隔离(Group)二、方案选取1. 命名空间创建2. Namespace实施方案三、nacos配置实战3.1. dev环境配置创建3.2. test环境配置创建四、代码coding实战4.1. 创建2项目4.2. …

干货|Flutter 原理与闲鱼深度实践

王康(正物)—— Flutter 官方成员 阿里巴巴技术专家,之前主要负责 Flutter 在闲鱼中的混合开发体系,目前重点关注 Flutter 深入度以及生态相关的工作。本文将分享三方面内容, Flutter 的原理、 Flutter 在闲鱼中的应用…

抽象方法,抽象类,接口

抽象方法和普通方法的的区别 抽象方法没有方法体,普通方法一定要有方法体 抽象方法一定要有abstract修饰,普通方法一定不能有 抽象方法必须写在抽象类中,普通方法既可以在抽象类中也可以在普通类中 被继承时,必须要被子类重写,普通方法普通方法没有要求 抽象类和普通类的区…

云计算,巨头们的背水一战

作者 | 马超责编 | 伍杏玲头图 | CSDN 下载自视觉中国出品 | CSDN(ID:CSDNnews)最近国内各IT巨头技术布局都颇有看点,先是腾讯宣布将投入5000亿,用于新基建的进一步布局(将重点投入云计算、人工智能、区块链…

基于函数计算的 Serverless AI 推理

前言概述 本文介绍了使用函数计算部署深度学习 AI 推理的最佳实践, 其中包括使用 FUN 工具一键部署安装第三方依赖、一键部署、本地调试以及压测评估, 全方位展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。 1.1 DEMO 概述 通过上传一个…

Centos7 Minimal安装常用工具包

文章目录1. 查看ifconfig2.下载wget3. 编辑vim4. 网络连通5.解压缩uzip6. gcc组件7. 上传下载组件8. 自动补全命令9. 安装lsofyum install net-tools wget vim telnet-server.x86_64 telnet.x86_64 unzip zip gcc-c lrzsz bash-completion lsof -y1. 查看ifconfig yum instal…

《Flutter in action》开放下载!闲鱼Flutter企业级实践精选

复制链接到浏览器 https://yq.aliyun.com/download/3792?utm_contentg_1000081730 下载。 闲鱼是国内最早使用Flutter的团队,也是Flutter业务线渗入最深的团队之一。 现在承载亿级流量的闲鱼将多年最佳实践经验整理成册,《Flutter in action》 正式面世…

阿里HBase高可用8年抗战回忆录

前言 2011年毕玄和竹庄两位大神将HBase引入阿里技术体系,2014年接力棒转到东8区第一位HBase commiter天梧手中,多年来与淘宝、旺旺、菜鸟、支付宝、高德、大文娱、阿里妈妈等几乎全BU合作伙伴携手共进,支撑了双十一大屏、支付宝账单、支付宝…

nginx 1.9.9 Linux 环境安装

文章目录一、软件下载和安装Nginx相关依赖1. 安装Nginx相关依赖2. 下载Nginx二、源码安装Nginx2.1. 解压2.2. nginx默认配置2.3. 编译安装2.3. 查找安装路径2.4.启动nginx2.5. 查看是否启动成功一、软件下载和安装Nginx相关依赖 1. 安装Nginx相关依赖 yum -y install gcc zli…

Java面向对象部分小结

Java面向对象部分小结 第一天: 1. 了解面向对象和面向过程 2. 对象是什么,静态特性(属性),动态特征(方法) 3. 类和对象的关系 类是抽象的,对象是具体的类是具有相同属性和行为(…

音视频应用驶入快车道 开发者如何快速追赶这波技术红利?

受访人 | 融云CPO 任杰 作者 | June 图片来源 | 视觉中国 毋庸置疑,随着5G时代的到来,实时音视频技术将会上升到一个全新的高度。 5G时代发生巨变的远远不止网速,凭借5G网络的高带宽,低延迟和大并发性,音视频应用场…

Mysql 8.0 安装教程 Linux Centos7

文章目录一、软件下载上传1. 下载2. 上传二、软件安装配置2.1. 解压mysql2.2. 创建data文件夹 存储文件2.3. 创建用户组以及用户和密码2.4. 授权用户2.5. 切换到bin目录下2.6. 编辑my.cnf文件2.7. 添加mysqld服务到系统2.8. 授权以及添加服务2.9. 启动mysql2.10. 查看启动状态2…

MyBatis 配置文件 用户密码加密存储

文章目录1. 创建db.properties2. 配置mybatis-config.xml3. 加解密工具类4. 加解密依赖5. 创建SqlSessionFactoryUtil类6. db.properties加密后7. 常量类实现原理: 在获取SqlSessionFactory之前,对获取的配置信息做解密操作 1. 创建db.properties prope…

重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源

Kubernetes 项目作为容器编排领域的事实标准, 成功推动了诸如阿里云 Kubernetes (ACK)等云原生服务的迅速增长。但同时我们也关注到,Kubernetes 的核心 API 资源比如 Service、Deployment 等,实际上只是应用中的不同组…

今天的作业 --- 去重

使用Set的写法: public String myMethod1(String str){ //Set方法Set setnew HashSet();for (int i 0; i < str.length(); i) {set.add(str.charAt(i));}String s "";for (Object o :set) {so;}return s;}由于Set集合内不会存储重复的字符,所以…

2020 AI 产业图谱启动,勾勒中国 AI 技术与行业生态

《2020年国务院政府工作报告》提出&#xff0c;重点支持「两新一重」建设。其中「两新一重」中的第一个「新」&#xff0c;就是新基建&#xff0c;而人工智能是新基建的重要组成部分。新基建首次被纳入政府工作报告后&#xff0c;各大科技厂商纷纷押注&#xff0c;重金投向「新…

从零开始入门 K8s | Kubernetes 网络概念及策略控制

一、Kubernetes 基本网络模型 本文来介绍一下 Kubernetes 对网络模型的一些想法。大家知道 Kubernetes 对于网络具体实现方案&#xff0c;没有什么限制&#xff0c;也没有给出特别好的参考案例。Kubernetes 对一个容器网络是否合格做出了限制&#xff0c;也就是 Kubernetes 的…

SwitchHosts

SwitchHosts 是一个管理、切换多个 hosts 方案的工具。 它是一个免费开源软件。 下载地址 https://github.com/oldj/SwitchHosts/releases