Java 比较字符串的不同方法

Java 比较字符串的不同方法,java,string,conditional-statements,equals,Java,String,Conditional Statements,Equals,我浏览了Github上的代码,发现有人用这种方法来比较两个字符串 if ("whatever".equals(theString)) 比较字符串的常规方法有什么不同吗 if (theString.equals("whatever")) 上面的路呢 我不确定以前是否有人问过类似的问题,如果是,我道歉 if(“whatever.”等于(字符串)) 其优点是,如果字符串为null,则不会出现null点异常。其余的都是一样的。正如其他人已经指出的,尤达符号用于避免可能的NPE。然而,我并不认为在代码

我浏览了Github上的代码,发现有人用这种方法来比较两个字符串

if ("whatever".equals(theString))
比较字符串的常规方法有什么不同吗

if (theString.equals("whatever"))
上面的路呢

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

if(“whatever.”等于(字符串))

其优点是,如果字符串为
null
,则不会出现
null点异常
。其余的都是一样的。

正如其他人已经指出的,尤达符号用于避免可能的NPE。然而,我并不认为在代码中隐藏潜在的bug是一种优势

使用

"whatever".equals(theString)
不会抛出NPE,但您可能认为一切都按预期进行。考虑一种情况,您未能初始化字符串,并且它得到了
null
,您的代码不会中断,条件将被计算为false

如果
null
指示某些内容,则应检查并适当处理:

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

字符串.equals(“无论什么”)
可以抛出NullPointerException<代码>“随便”。等于(字符串)不能。谢谢您的快速回复;)杰里米:这个问题就像你能提出的任何问题一样,已经被问了几百次,回答了几百次。学会搜索信息。