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

Java 布爾類型深度解析:邏輯運算、短路特性與按位運算差異

     編輯:Java 相關知識

基本概念

boolean 只有 true 和 false 兩個值,不可與其他基本類型互相轉換。直接用於 if 判斷無需比較 == true。

boolean b = false;
System.out.println("b is " + b); // b is false
b = true;
if (b) System.out.println("執行"); // 直接判斷
System.out.println("10 > 9 is " + (10 > 9)); // 關係運算結果為 boolean

邏輯運算符 vs 按位運算符

運算符類型短路特性異或支持
&&、||、!邏輯運算支持(短路)不支持
&、|、^、~按位邏輯運算不支持(全評估)支持(^ 異或)

短路現象演示

static boolean f1() { return false; }
static boolean f2() { return true; }
static boolean f3() { return true; }

boolean r1 = f1() && f2() && f3(); // f1 為 false,後兩個不執行
boolean r2 = f2() || f1() || f3(); // f2 為 true,後兩個不執行
// 短路導致邏輯錯誤示例
boolean r3 = f2() || f3() && f1(); // 實際 true,預期 false(優先級導致)
// 正確寫法
boolean r4 = (f2() || f3()) && f1(); // false

按位異或(^)用法

boolean x = true ^ true;   // false
boolean y = true ^ false;  // true
// 適用於「兩者有且僅有一個為真」的場景

最佳實踐建議

  • 日常業務邏輯優先使用邏輯運算符(&&、||),利用短路提升性能
  • 需要全評估副作用(如方法調用必須執行)時使用按位運算符(&、|)
  • 異或場景明確使用 ^
  • 避免在短路表達式中依賴副作用,導致難以排查的 Bug
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved