首頁 > Java > java教程 > 主體

Java 中布林運算子 `&&`/`||` 和位元運算子 `&`/`|` 之間的主要差異是什麼?

Mary-Kate Olsen
發布: 2024-11-18 21:04:02
原創
996 人瀏覽過

What's the Key Difference Between Boolean Operators `&&`/`||` and Bitwise Operators `&`/`|` in Java?

揭示布林運算子的微妙之處:& 與&& 和| vs ||

而布林邏輯運算子&&(條件與)和|| 的行為(條件或)看起來很熟悉,存在對應的&(位元與)和| (位元或),值得關注。這些位元運算子在位元層級上運行,提供了一組不同的規則。

考慮以下範例以掌握其功能:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板