网易首页 > 网易号 > 正文 申请入驻

面试官问:为什么不建议用 (a).equals(b) 判断对象相等?

0
分享至

一直以为这个方法是java8的,今天才知道是是1.7的时候,然后翻了一下源码。

这片文章中会总结一下与a.equals(b)的区别,然后对源码做一个小分析。

一、值是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
Objects.equals("abc",null) → 返回 false
Objects.equals(null, null) → 返回 true
二、值是空字符串的情况

1.a 和 b 如果都是空值字符串:"", 则a.equals(b), 返回的值是true, 如果a和b其中有一个不是空值字符串,则返回false;公众 号Java精选,回复java面试,获取面试资料,支持在线刷题。

2.这种情况下Objects.equals与情况1 行为一致。另外,推荐摸鱼神器:https://www.yoodb.com/

"abc".equals("") → 返回 false
"".equals("abc") → 返回 false
"".equals("") → 返回 true
Objects.equals("abc", "") → 返回 false
Objects.equals("","abc") → 返回 false
Objects.equals("","") → 返回 true
三、源码分析 1.源码public final class Objects {
private Objects() {
throw new AssertionError("No java.util.Objects instances for you!");

/**
* Returns {@code true} if the arguments are equal to each other
* and {@code false} otherwise.
* Consequently, if both arguments are {@code null}, {@code true}
* is returned and if exactly one argument is {@code null}, {@code
* false} is returned. Otherwise, equality is determined by using
* the {@link Object#equals equals} method of the first
* argument.
*
* @param a an object
* @param b an object to be compared with {@code a} for equality
* @return {@code true} if the arguments are equal to each other
* and {@code false} otherwise
* @see Object#equals(Object)
*/
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
2.说明

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

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

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

四、“a==b”和”a.equals(b)”有什么区别?

如果 a 和 b 都是对象,则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true。

而 a.equals(b) 是进行逻辑比较,当内容相同时,返回true,所以通常需要重写该方法来提供逻辑一致性的比较。

作者:曹军 https://www.cnblogs.com/juncaoit/p/12422752.html

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

最近有很多人问,有没有读者交流群!加入方式很简单,公众号Java精选,回复“加群”,即可入群!

(微信小程序):3000+道面试题,包含Java基础、并发、JVM、线程、MQ系列、Redis、Spring系列、Elasticsearch、Docker、K8s、Flink、Spark、架构设计等,在线随时刷题!

特别推荐:专注分享最前沿的技术与资讯,为弯道超车做好准备及各种开源项目与高效率软件的公众号,「大咖笔记」,专注挖掘好东西,非常值得大家关注。点击下方公众号卡片关注

文章有帮助的话,点在看,转发吧!

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
胡塞武装导弹反击,精准击中“艾森豪威尔”号!美军敢证实吗?

胡塞武装导弹反击,精准击中“艾森豪威尔”号!美军敢证实吗?

王子看台海
2024-06-01 08:29:44
北大吴谢宇弑母通灵记录:通灵人自曝与其交流,得知弑母真实动机

北大吴谢宇弑母通灵记录:通灵人自曝与其交流,得知弑母真实动机

古今档案
2024-05-29 18:42:08
男单世界冠军出局!重庆冠军赛2:3出局,林高远11:1同胞手下留情

男单世界冠军出局!重庆冠军赛2:3出局,林高远11:1同胞手下留情

国乒二三事
2024-06-02 05:56:14
萧敬腾谈向Summer求婚,我等不了了,每天要抱着她才能睡

萧敬腾谈向Summer求婚,我等不了了,每天要抱着她才能睡

圈里的甜橙子
2024-05-27 03:43:52
中国女排3-0泰国!谁是最大功臣,赛后数据一目了然,蔡斌获赞

中国女排3-0泰国!谁是最大功臣,赛后数据一目了然,蔡斌获赞

知轩体育
2024-06-01 21:39:11
网红一栗小莎子官宣产子!儿子皮肤白皙,老公是温州富二代!

网红一栗小莎子官宣产子!儿子皮肤白皙,老公是温州富二代!

娱小小新
2024-06-01 16:24:57
星二代孙安佐泰国闯祸:台商会代缴保释金父母领回

星二代孙安佐泰国闯祸:台商会代缴保释金父母领回

葫芦哥爱吐槽
2024-06-01 18:33:27
嫦娥六号成功着陆,关键操作稳妥完成,开始人类首次月背取样操作

嫦娥六号成功着陆,关键操作稳妥完成,开始人类首次月背取样操作

科普大世界
2024-06-02 08:16:51
辣眼睛?幼师因为在高台上领舞而成为焦点,穿短裙跳舞被热议

辣眼睛?幼师因为在高台上领舞而成为焦点,穿短裙跳舞被热议

蝴蝶花雨话教育
2024-05-31 09:54:36
未来这七大专业吃香,张雪峰力荐:我学了我能干,你没学干不了

未来这七大专业吃香,张雪峰力荐:我学了我能干,你没学干不了

妍妍教育日记
2024-05-31 21:12:33
太乱了!世联赛最新积分榜:中国女排又掉到第7,美国女排升第6

太乱了!世联赛最新积分榜:中国女排又掉到第7,美国女排升第6

元爸体育
2024-06-01 14:35:59
河南一臃肿大妈街头游走,辣眼打扮无人敢惹,当地人:拿她没办法

河南一臃肿大妈街头游走,辣眼打扮无人敢惹,当地人:拿她没办法

三叶秋文局
2024-06-01 19:53:02
中美之争大局已定,谁胜谁负毫无悬念

中美之争大局已定,谁胜谁负毫无悬念

枫冷慕诗
2024-05-31 18:23:27
央视直播,国乒最新赛程出炉,今日两场内战两场抗日,王曼昱遗憾

央视直播,国乒最新赛程出炉,今日两场内战两场抗日,王曼昱遗憾

体育书生阿南
2024-06-02 09:01:40
乌克兰情报部门截获关于从别尔哥罗德撤军的俄军对话

乌克兰情报部门截获关于从别尔哥罗德撤军的俄军对话

亡海中的彼岸花
2024-06-02 11:37:57
厦门楼市全军覆没,厦门岛内思明区从63000元调整为54000元

厦门楼市全军覆没,厦门岛内思明区从63000元调整为54000元

有事问彭叔
2024-05-31 11:41:41
詹俊晒下赛季皇马预测锋线:若拥有这样攻击线,欧冠准备几连冠?

詹俊晒下赛季皇马预测锋线:若拥有这样攻击线,欧冠准备几连冠?

直播吧
2024-06-02 07:41:09
农村留守妇女的性生活到底有多尴尬?

农村留守妇女的性生活到底有多尴尬?

书画艺术收藏
2024-03-06 19:00:05
就业率98.1%!日本应届生迎来就业“反选时代”,日企“抢人大战”:上班就送100万日元,一年有129天休假【附大学生就业现状分析】

就业率98.1%!日本应届生迎来就业“反选时代”,日企“抢人大战”:上班就送100万日元,一年有129天休假【附大学生就业现状分析】

前瞻网
2024-05-31 19:50:16
杨幂又带火了一款裤子,叫“鲨鱼裤”,时髦显瘦,照着搭配超好看

杨幂又带火了一款裤子,叫“鲨鱼裤”,时髦显瘦,照着搭配超好看

乐悦侃娱乐
2024-06-01 14:15:32
2024-06-02 13:46:44
Java精选
Java精选
一场永远也演不完的戏
1551文章数 3855关注度
往期回顾 全部

头条要闻

美媒:以总理将赴美国国会演讲 多名美议员或不出席

头条要闻

美媒:以总理将赴美国国会演讲 多名美议员或不出席

体育要闻

我已伤痕累累 却依然感动不了命运之神

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

新造车5月销量: 小鹏乏力 问界暂"缺席"

科技要闻

成功着陆!嫦娥六号将开始月背“挖宝”

汽车要闻

吉利银河E5 Flyme Auto智能座舱首发

态度原创

本地
手机
艺术
房产
旅游

本地新闻

食味印象|歙县限定!枇杷味儿的清甜初夏

手机要闻

苹果在iPhone退货骗局中损失超过1200万美元 十年间有16000台设备被掉包

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

房产要闻

重磅!琼海出台楼市新政:住房出租、挂牌计划出售,都可减套数!

旅游要闻

武侯祠开启“时光机”穿越到“那些年”

无障碍浏览 进入关怀版