Java基礎系列文章
Java基礎(一):發展史、技術體系與JDK環境配置詳解
Java基礎(二):八種基本數據類型詳解
Java基礎(三):邏輯運算符詳解
目錄
- 一、什么是邏輯運算符?
- 二、基礎邏輯運算符(3種)
- 1、&&邏輯與(短路與)
- 2、||邏輯或(短路或)
- 3、!邏輯非
- 四、非短路邏輯運算符(2種)和異或(1種)
- 1、&與|(非短路)
- 2、^異或
- 五、邏輯運算符優先級
- 總結
一、什么是邏輯運算符?
??邏輯運算符用于連接多個布爾表達式
(即返回值為 true
或 false
的表達式),根據邏輯規則(如與、或、非)對表達式進行運算,最終得到一個布爾值。
二、基礎邏輯運算符(3種)
1、&&邏輯與(短路與)
語法:
boolean a = true, b = false;
System.out.println(a && b); // false(全真才真)
說明:
- 當第一個表達式為
false
時,Java 不再判斷第二個表達式,直接返回false
。這種行為稱為“短路”
- 常用于
防止空指針異常
:
if (obj != null && obj.getValue() > 10) {// 安全執行 obj.getValue()
}
2、||邏輯或(短路或)
語法:
boolean a = true, b = false;
System.out.println(a || b); // true(有真即真)
說明:
- 當第一個表達式為
true
時,Java 會跳過第二個表達式的計算 - 常用于
提供備選條件
:
if (user.isAdmin() || user.hasPermission("EDIT")) {// 允許訪問
}
3、!邏輯非
語法:
boolean a = true,
System.out.println(!a); // false(取反)
說明:
- 對布爾表達式
取反
- 常用于
狀態切換
或條件反向
:
if (!isValid) {System.out.println("數據無效!");
}
四、非短路邏輯運算符(2種)和異或(1種)
??& | ^
被同時用于邏輯運算
和位運算
,源于編程語言的語法設計:當操作數為布爾值
時執行邏輯運算,為整數
時執行位運算。
1、&與|(非短路)
與&&和|的異同:
- 相同點:對于邏輯運算&&和&與||和|運算返回結果一致
- 不同點:
&
和|
會始終計算兩個表達式
,無論第一個表達式的值如何
boolean result = (a > 0) & (b++ > 0); // b 一定會自增
2、^異或
語法:
System.out.println(true ^ true); // false
System.out.println(false ^ false); // false
System.out.println(true ^ false); // true
說明:
- 兩個表達式
一個為真,一個為假
時,結果才為true
- 實際上可以用于
檢查兩個狀態是否“互斥”
:
boolean isSingle = true;
boolean isMarried = false;
if (isSingle ^ isMarried) {System.out.println("狀態有效");
}
五、邏輯運算符優先級
優先級從高到低(部分):
!
(邏輯非)&&
(邏輯與)||
(邏輯或)
// 復雜表達式示例
boolean result = !false || true && false;
// 等價于:(true) || (true && false) → true// 使用括號明確意圖(推薦!)
boolean safeResult = (!false) || (true && false);
總結
??&&、|| 和 !
是邏輯運算符,用于布爾值判斷
,返回布爾值;而 &、|、^
是常用于按位運算符,用于按位操作整數
,返回整數(下篇文章細講),這里&、|、^ 也可以用于邏輯運算符。
運算符 | 名稱 | 描述 |
---|---|---|
&& | 邏輯與(AND) | 兩個條件都為 true 時,結果為 true |
|| | 邏輯或(OR) | 只要一個條件為 true ,結果就是 true |
! | 邏輯非(NOT) | 取反操作,將 true 變成 false ,反之亦然 |
& | 位與 | 邏輯與運算但不會短路 (始終計算兩側表達式) |
| | 位或 | 邏輯或運算但不會短路 (始終計算兩側表達式) |
^ | 異或 | 兩個條件不同為 true ,相同為 false |