为了账号安全,请及时绑定邮箱和手机立即绑定

面试:Java等于

面试:Java等于

慕勒3428872 2019-11-30 13:50:47
面试中有人问我这个问题。以下哪个更适合使用 MyInput.equals("Something");   要么"Something".equals(MyInput);谢谢
查看完整描述

3 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

我会去


"Something".equals(MyInput);

在这种情况下,如果MyInput是null,则不会抛出NullPointerException


在这里,我们确定equals()要调用的对象是NOT NULL。


并且,如果您希望NullPointerException代码做出一些决定或抛出/包装它,那么请首先进行。


对性能没有影响


查看完整回答
反对 回复 2019-11-30
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

成为逆势.... :)


如果MyInput为null,则第一行可能会崩溃,但这只是为了方便代码的程序员(通常带有C宿醉)在不想断言“ MyInput”可以为null时使用。


如果使用第二个选项,则此行可能不会导致NullPointerException,但以下几行可能会导致。


我相信最好了解变量的可能状态,而不是依赖于一些可以简化您的良心的代码构造。


查看完整回答
反对 回复 2019-11-30
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

那么我们如何将整个代码上下颠倒地进行更改呢?


那些首先喜欢常数的人,看到它们时会感觉如何?


if ( 2 == i) 

在我看来,隐藏NullPointerException永远不是好处,而是设计中的一个缺点。


如果您从不期望NullPointerException却遇到了NullPointerException,那么您需要让应用程序崩溃,跟踪日志并查看发生这种情况的原因。您可能完全错过了一个商业案例:)



如果您可以选择使用null参数,并且对单独处理它不感兴趣,则可以使用StringUtils.equals(...)之类的实用程序方法


就是说,我绝不允许任何团队成员使用第二种形式,因为第二种形式不一致且不可读。


查看完整回答
反对 回复 2019-11-30
  • 3 回答
  • 0 关注
  • 325 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信