可能重複:
&& (AND) and || (OR) in Java IF statements快速的問題,如果有多個條件
這是我應該大概以前知道的答案,多年的問題,但如果我如果寫一個在Java中有類似if(x!= null & & y == null & & x.equals(z))的語句是否安全?我假設if語句的條件從左到右被解釋,所以檢查x!= null是否開始將確保在條件的x.equals(z)部分上不拋出空指針異常(至少x)。這是否準確?
可能重複:
&& (AND) and || (OR) in Java IF statements快速的問題,如果有多個條件
這是我應該大概以前知道的答案,多年的問題,但如果我如果寫一個在Java中有類似if(x!= null & & y == null & & x.equals(z))的語句是否安全?我假設if語句的條件從左到右被解釋,所以檢查x!= null是否開始將確保在條件的x.equals(z)部分上不拋出空指針異常(至少x)。這是否準確?
簡短的回答:你做得很好。
漫長的回答:你做得很好,因爲Java使用了一種稱爲短路布爾評估的方法。瞭解它here
簡而言之:是的,這是正確的。 :)
像@mellamokb說這是短路。
我只補充一點,如果你有比較討論這樣的:
if (str != null && str.equals("FINAL STRING") {...}
更好地利用:
第一種方式是經常choosen但條件應儘可能簡單:)
這樣的事情最好通過[諮詢JLS]進行檢查(http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.23)。它非常嚴格,精確並且免費提供,不像C++。 – 2011-02-17 18:16:03