如果塊更好?其中字符串的最好最好的技術等於比較
private static void checkStr(String str) {
if (str.equals("exit")) {
System.out.println("It is equal");
}
if ("exit".equals(str)) {
System.out.println("It is equal");
}
}
如果塊更好?其中字符串的最好最好的技術等於比較
private static void checkStr(String str) {
if (str.equals("exit")) {
System.out.println("It is equal");
}
if ("exit".equals(str)) {
System.out.println("It is equal");
}
}
第一種方法是給NullPointerExceptions
保證金。所以從我的角度來看,第二個更好。
對於常量的情況,你應該總是比第一種方法更喜歡第二種方法。
"exit".equals(str)
你可以找到一個詳細的解釋here
我個人更喜歡另一種方法。 Apache Commons - commons lang有ObjectUtils.equals(Object, Object)
。採用這種方法,即使對於null值,您也始終安全。
比較是否相等,其中任一個或兩個對象 可以爲空的兩個對象。
ObjectUtils.equals(null, null) = true ObjectUtils.equals(null, "") = false ObjectUtils.equals("", null) = false ObjectUtils.equals("", "") = true ObjectUtils.equals(Boolean.TRUE, null) = false ObjectUtils.equals(Boolean.TRUE, "true") = false ObjectUtils.equals(Boolean.TRUE, Boolean.TRUE) = true ObjectUtils.equals(Boolean.TRUE, Boolean.FALSE) = false
是的第二個更可讀 – Pooya 2012-07-28 10:50:45
可以肯定的是,如果你想允許空值,這是唯一的。在許多情況下,您希望儘快拋出空值,因爲它們代表了您想要修復的錯誤。 – 2012-07-28 14:14:42
謝謝。你用很好的方式描述瞭解決方案。 – 2012-07-31 04:39:15
我喜歡:
"exit".equals(str)
,只是爲了避免NullPointerException
。
你會鴨NullPointerException
情況下使用:
"exit".equals(str)
我覺得str.equals("exit")
是寫的比較更自然的方式,但會拋出一個NullPointerException
如果str
是空的,而"exit".equals(str)
只會評估爲假。
您需要知道爲什麼str
可以爲null。空值可能是由程序中其他地方的錯誤或錯誤引起的,例如,您可能會更好地單獨檢查null
而不是忽略它,或者確保它不是空的。
如果你爲開發做這件事,我會建議使用ApacheCommon更好的優雅 – 2012-07-28 10:48:34