Java 運算符大全:算術、關係、位、邏輯、賦值、三元與優先級詳解
運算符操作變數進行計算、比較、邏輯判斷。分為六大類。
算術運算符
| 運算符 | 說明 | 範例 (a=10,b=20) |
| + | 加法 | a+b=30 |
| - | 減法 | a-b=-10 |
| * | 乘法 | a*b=200 |
| / | 除法 (整數除法捨去小數) | b/a=2 |
| % | 取模 (餘數) | b%a=0 |
| ++ | 自增 | ++a=11, a++=10(後用) |
| -- | 自減 | --b=19, b--=20(後用) |
前綴 vs 後綴自增減
int a = 5, b = 5;
int x = 2 * ++a; // a=6, x=12 (先增後用)
int y = 2 * b++; // b=6, y=10 (先用後增)
關係運算符 (返回 boolean)
| 運算符 | 說明 | 範例 (a=10,b=20) |
| == | 等於 | a==b → false |
| != | 不等於 | a!=b → true |
| > | 大於 | a>b → false |
| < | 小於 | a<b → true |
| >= | 大於等於 | b>=a → true |
| <= | 小於等於 | b<=a → false |
位運算符 (操作整數二進制位)
假設 a=60 (0011 1100), b=13 (0000 1101)
| 運算符 | 說明 | 結果 |
| & | 按位與 (同為1才1) | 12 (0000 1100) |
| | | 按位或 (有1即1) | 61 (0011 1101) |
| ^ | 按位異或 (不同為1) | 49 (0011 0001) |
| ~ | 按位取反 (0↔1) | -61 (補碼 1100 0011) |
| << | 左移 (低位補0) | a<<2 = 240 (1111 0000) |
| >> | 右移 (符號位延伸) | a>>2 = 15 (0000 1111) |
| >>> | 無符號右移 (高位補0) | a>>>2 = 15 (0000 1111) |
邏輯運算符
| 運算符 | 名稱 | 規則 | 範例 (a=true,b=false) |
| && | 邏輯與 | 全真才真 | a&&b → false |
| || | 邏輯或 | 一真即真 | a||b → true |
| ! | 邏輯非 | 取反 | !(a&&b) → true |
短路特性
&&:左邊 false → 右邊不執行。
||:左邊 true → 右邊不執行。
int a = 5;
boolean b = (a < 4) && (a++ < 10); // a<4 為 false,短路,a 不增
System.out.println(a); // 5
賦值運算符
| 運算符 | 說明 | 等價寫法 |
| = | 簡單賦值 | c = a + b |
| +=, -=, *=, /=, %= | 算術賦值 | c += a → c = c + a |
| <<=, >>=, >>>= | 移位賦值 | c <<= 2 → c = c << 2 |
| &=, ^=, |= | 位運算賦值 | c &= 2 → c = c & 2 |
條件運算符 (三元運算符)
變數 = (布林運算式) ? 值1 : 值2;
// 相當於
if (布林運算式) 變數 = 值1; else 變數 = 值2;
範例
int a = 10;
int b = (a == 1) ? 20 : 30; // 30
b = (a == 10) ? 20 : 30; // 20
instanceof 運算符
檢查物件是否為特定類型 (類/介面/父類) 的實例:
String s = "Hello";
boolean b = s instanceof String; // true
Object obj = new ArrayList();
obj instanceof List; // true
obj instanceof ArrayList; // true
obj instanceof String; // false
運算符優先級表 (高→低)
| 優先級 | 運算符 | 結合性 |
| 1 | 後綴 () [] . | 左→右 |
| 2 | 一元 ++ -- + - ! ~ | 右→左 |
| 3 | 乘性 * / % | 左→右 |
| 4 | 加性 + - | 左→右 |
| 5 | 移位 << >> >>> | 左→右 |
| 6 | 關係 < <= > >= instanceof | 左→右 |
| 7 | 相等 == != | 左→右 |
| 8 | 按位與 & | 左→右 |
| 9 | 按位異或 ^ | 左→右 |
| 10 | 按位或 | | 左→右 |
| 11 | 邏輯與 && | 左→右 |
| 12 | 邏輯或 || | 左→右 |
| 13 | 條件 ? : | 右→左 |
| 14 | 賦值 = += -= *= /= %= &= ^= |= <<= >>= >>>= | 右→左 |
| 15 | 逗號 , | 左→右 |
最佳實踐: 複雜運算式請用括號 () 明確優先級,提升可讀性並避免錯誤。