翻转equals调用,equals方法被调用时字符串和对象的顺序

之前改的bug,一开始我先判断sortKey不为空,然后再去判断sortKey的值,见下图,

 

代码push后,同事审核后,叫我将sortKey和值得顺序调换一下,说这样就不用再判断为空。这是改之后的代码,见下图,

 

问了几个人,说是避免空指针异常,我说我前面已经对sortKey做了一个不为空判定,有人回答说虽然没有错,但是多判断了一次,而且从代码规范上看显得多余。

问题来了,equals方法被调用时,谁在前谁在后,这里面有什么讲究?经过查阅相关资料,整理了一些知识点。

equals方法在Object抽象类中比较的是两个对象的引用地址是否相同,然而在String类型中,equals方法被重写了。因此String类型中的equals方法是比较当前字符串与传进来的字符串是否相同。

如果将对象放在前面,调用equals方法时,若对象为空,会报空指针异常;

但若是将字符串放在前面,也就是相当于判断这个字符串的值,即使它为空,也不会报错。因此可以总结为:报不报错主要看调用equals的对象是否为空。

所以在使用equals方法时,通常将字符串放在前面,比如"userName" .equals (对象),这样就不用担心对象为空了。先前写的虽然对sortKey对象做了不为空的判定,一方面多判断了一次,影响性能,另一反面也浪费了equals方法的使用。所以调换顺序更为规范。

 

原文链接:https://www.cnblogs.com/luckyliulin/p/9480727.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值