理解Java 中'&' 和'&&' 之間的區別
在Java 中,'&' 運算子傳統上與整數的位元運算。然而,最近發現該運算子也可以執行布林運算,這使其與「&&」運算子產生了問題。
雖然「&」和「&&」都驗證布林操作數的真實性,但它們的不同之處在於他們的評價邏輯。 '&&' 執行惰性求值,這表示它僅在左側 (LHS) 運算元為 true 時才求值右側 (RHS) 運算元。這確保瞭如果 LHS 操作數為 false,則不會計算 RHS 操作數,從而可能避免不必要的計算並防止異常。
相反,「&」會不斷計算兩個運算元。如果對於某些 LHS 操作數值沒有明確定義 RHS 操作數,這可能會導致異常。考慮以下範例:
if ((x != 0) & (1/x > 1)) { // ... }
如果 'x' 為 0,則此表達式在嘗試計算 '1/x' 時將引發異常。為了防止這種情況,請使用 '&&' 代替:
if ((x != 0) && (1/x > 1)) { // ... }
這裡,如果 'x' 不為 0,它只會繼續計算 '1/x',從而避免異常。
此外,「|」、「|>」布林運算子的對應部分的行為類似。 '|>'如果第一個操作數的計算結果為 true,則停止計算,因為結果總是 true。
理解 '&' 和 '&&' 之間的微妙區別對於編寫高效且健壯的 Java 程式碼至關重要,可以避免由以下原因引起的運行時錯誤過早評估。
以上是Java 的 `&` 和 `&&` 運算子之間的主要差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!