比较字符串的不同方式

时间:2016-08-09 07:23:38

标签: java string conditional-statements equals

我正在浏览Github上的代码,我发现有人用这种方式来比较2个字符串。

if ("whatever".equals(theString))

比较字符串的正常方法

之间是否有任何区别?
if (theString.equals("whatever"))

以及上面的方式?

我不确定之前是否有过类似的问题,如果有,我道歉。

2 个答案:

答案 0 :(得分:7)

if("whatever".equals(theString)) 有一个好处,如果theStringnull,则不会命中NullPointerException。其余的都一样。

答案 1 :(得分:2)

正如其他人已经指出的那样,Yoda符号用于避免可能的NPE。但是,我并不认为在代码中隐藏潜在的错误是有利的。

使用

"whatever".equals(theString)

不会抛出NPE,但你可能认为一切都按预期工作。考虑一下您未能初始化字符串的情况,它得到null,您的代码不会中断,并且条件将被评估为false。

如果null表示某事,您应该检查并妥善处理:

if (theString == null) {
    // log, initialize or whatever
}