维护Java项目时发现"=="顺手改成equals之后,发生了什么?
最近发生一件很尴尬的事情,在维护一个Java项目的时候,发现有使用来比较两个对象的属性,面试题看到的【""和equals的区别】点燃了我,于是顺手就把"=="改成了equals。
悲剧发生......
"=="和equals的区别
"":值比较
equals:引用比较,但一些类重写了equals方法,如String、Integer等,变成了值比较。
所以我把""修改成equals,看起来正确至极,实际也正确,只是考虑不至极。
使用equals的前提
使用equals进行比较,如:
a和b是两个对象a.getId().equals(b.getId())
需要确保a.getId()不为null,因为null是没有.equals()方法的。
各种对象使用equals
String类型:
可以使用StringUtils.equals()进行比较,该方法内置非空校验
其余封装类型:
可以使用Objects.equals()进行比较,该方法内置非空校验
使用三目运算符:a.getId() == null ? b.getId() == null ? false : true : a.getId().equals(b.getId())
任重而道远,学与用差以毫厘都不行!
原文转载:http://www.shaoqun.com/a/626675.html
mein:https://www.ikjzd.com/w/1601
agora:https://www.ikjzd.com/w/2176
维护Java项目时发现"=="顺手改成equals之后,发生了什么?最近发生一件很尴尬的事情,在维护一个Java项目的时候,发现有使用来比较两个对象的属性,面试题看到的【""和equals的区别】点燃了我,于是顺手就把"=="改成了equals。悲剧发生......"=="和equals的区别"":
宝付:https://www.ikjzd.com/w/539
黄远:https://www.ikjzd.com/w/1785
zozotown:https://www.ikjzd.com/w/2180
亚马逊美国站top_3000_reviewer邮箱整理:https://www.ikjzd.com/tl/107390
干货:如何"蹭"亚马逊免费流量?:https://www.ikjzd.com/home/112198
口述:老公频繁找小姐让我们的婚姻决裂情感婚姻出轨:http://lady.shaoqun.com/m/a/26786.html
No comments:
Post a Comment