我正在浏览Github上的代码,我发现有人用这种方式来比较2个字符串。
if ("whatever".equals(theString))
比较字符串的正常方法
之间是否有任何区别?if (theString.equals("whatever"))
以及上面的方式?
我不确定之前是否有过类似的问题,如果有,我道歉。
答案 0 :(得分:7)
if("whatever".equals(theString))
有一个好处,如果theString
为null
,则不会命中NullPointerException
。其余的都一样。
答案 1 :(得分:2)
正如其他人已经指出的那样,Yoda符号用于避免可能的NPE。但是,我并不认为在代码中隐藏潜在的错误是有利的。
使用
"whatever".equals(theString)
不会抛出NPE,但你可能认为一切都按预期工作。考虑一下您未能初始化字符串的情况,它得到null
,您的代码不会中断,并且条件将被评估为false。
如果null
表示某事,您应该检查并妥善处理:
if (theString == null) {
// log, initialize or whatever
}