首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java & 與 && 差異深度解析:短路邏輯、副作用與位運算雙重身份

     編輯:Java 相關知識

&&、&、||、| 是 Java 條件判斷的四大基石。本文聚焦 & 與 && 的本質區別:短路求值、副作用執行、位運算屬性,並給出防空指針、避免誤增長的最佳實踐模式。

核心差異對照

特性&& (短路與)& (邏輯與/位與)
求值策略左側 false 直接返回,不執行右側總是執行雙側表達式
副作用右側副作用可能被跳過右側副作用必定執行
位運算不支持支持整數位運算

經典防空指針模式

// 安全:str 為 null 時短路,不執行 equals
if (str != null && !str.equals("")) { ... }

// 危險:& 不短路,str 為 null 直接拋 NPE
if (str != null & !str.equals("")) { ... }

副作用陷阱實例

int i = 0;
if (2 == 1 && ++i > 0) { } // i 保持 0,右側未執行
if (2 == 1 & ++i > 0) { }   // i 變為 1,右側強制執行

位運算場景

int flags = 0b1101;
boolean hasRead = (flags & 0b0100) != 0; // 檢查第 3 位
flags |= 0b0010; // 設置第 2 位

同理可證:|| vs |

  • || 短路或:左真則右不執行。
  • | 邏輯或/位或:雙側必執行,可用於位掩碼合併。

編碼建議

  1. 條件判斷**優先使用短路版 (&&/||)**,兼顧性能與安全。
  2. 需保證副作用執行(如多重校驗、計數器)時顯式使用 &/| 並添加註釋。
  3. 位運算場景**只用 &/|/^/~**,語義明確。

搞清這對「雙胞胎」,能消除一大類難以復現的邏輯 Bug,也是面試高頻考點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved