而布林邏輯運算子&&(條件與)和|| 的行為(條件或)看起來很熟悉,存在對應的&(位元與)和| (位元或),值得關注。這些位元運算子在位元層級上運行,提供了一組不同的規則。
考慮以下範例以掌握其功能:
int a = 6; // Binary: 110 int b = 4; // Binary: 100 // Bitwise AND int c = a & b; // 110 // & 100 // ----- // 100 // Bitwise OR int d = a | b; // 110 // | 100 // ----- // 110 System.out.println(c); // Output: 4 System.out.println(d); // Output: 6
在此示範中,位元運算子執行對輸入整數的每個對應位元進行邏輯運算,產生修改後的值。按位與 (&) 和位元或 (|) 與邏輯對應項不同,它們在位元層級上進行操作,將輸入視為 0 和 1 的序列。
需要注意的是 &&和 ||運營商遵守「短路」規則。這意味著當第一個條件計算為 false 或 true 時,將跳過第二個條件的計算,從而有效防止任何潛在的錯誤或異常。
相反,& 和 |不要表現出這種行為。他們仔細檢查子句中的每個條件,評估所有提供的表達式,無論前面條件的結果如何。當其中一個表達式可能引發異常時,這種區別就變得至關重要,如下例所示:
int a = null; if ((a != null) & (a.something == 3)) { // Safe: 'a.something' will not be evaluated if 'a' is null } if ((a != null) & (a.something == 3)) { // Unsafe: 'a.something' will be evaluated even if 'a' is null, potentially raising an exception }
透過理解布林運算符之間的這些基本差異,您可以在程式碼中有效地利用它們的功能,確保正確和優化的行為。
以上是Java 中布林運算子 `&&`/`||` 和位元運算子 `&`/`|` 之間的主要差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!