Java 運算子 (Operators)

運算子用來對變數和值執行運算操作。

算術運算子

運算子說明範例
+加法5 + 3 = 8
-減法5 - 3 = 2
*乘法5 * 3 = 15
/除法5 / 3 = 1
%餘數(模數)5 % 3 = 2
int a = 10, b = 3;

System.out.println(a + b);  // 13
System.out.println(a - b);  // 7
System.out.println(a * b);  // 30
System.out.println(a / b);  // 3(整數除法)
System.out.println(a % b);  // 1

整數除法 vs 浮點數除法

int a = 5, b = 2;
System.out.println(a / b);        // 2(整數除法,小數被截斷)
System.out.println(a / (double)b); // 2.5
System.out.println(5.0 / 2);       // 2.5

賦值運算子

運算子說明等同於
=賦值
+=加後賦值a = a + b
-=減後賦值a = a - b
*=乘後賦值a = a * b
/=除後賦值a = a / b
%=餘數後賦值a = a % b
int x = 10;

x += 5;   // x = 15
x -= 3;   // x = 12
x *= 2;   // x = 24
x /= 4;   // x = 6
x %= 4;   // x = 2

遞增與遞減運算子

運算子說明
++遞增 1
--遞減 1
int a = 5;
a++;        // a = 6
++a;        // a = 7
a--;        // a = 6
--a;        // a = 5

前綴 vs 後綴

int a = 5;
int b = a++;   // b = 5, a = 6(先賦值再遞增)
int c = ++a;   // c = 7, a = 7(先遞增再賦值)

int x = 5;
int y = x--;   // y = 5, x = 4
int z = --x;   // z = 3, x = 3

比較運算子

運算子說明範例
==等於5 == 5 → true
!=不等於5 != 3 → true
>大於5 > 3 → true
<小於5 < 3 → false
>=大於等於5 >= 5 → true
<=小於等於5 <= 3 → false
int a = 5, b = 3;

System.out.println(a == b);  // false
System.out.println(a != b);  // true
System.out.println(a > b);   // true
System.out.println(a < b);   // false
System.out.println(a >= 5);  // true
System.out.println(a <= 3);  // false

邏輯運算子

運算子說明範例
&&且(AND)true && false → false
||或(OR)true || false → true
!非(NOT)!true → false
boolean a = true, b = false;

System.out.println(a && b);  // false
System.out.println(a || b);  // true
System.out.println(!a);      // false
System.out.println(!b);      // true

// 實際應用
int age = 25;
boolean hasLicense = true;
boolean canDrive = age >= 18 && hasLicense;  // true

短路運算

&&|| 是短路運算子:

  • &&:如果左邊是 false,右邊不會執行
  • ||:如果左邊是 true,右邊不會執行
int x = 5;

// 短路運算
boolean result = (x > 10) && (++x > 5);
System.out.println(x);  // 5(右邊沒有執行)

// 非短路運算子:& 和 |(兩邊都會執行)
boolean result2 = (x > 10) & (++x > 5);
System.out.println(x);  // 6(右邊有執行)

三元運算子

語法:條件 ? 值1 : 值2

int a = 10, b = 20;
int max = (a > b) ? a : b;
System.out.println(max);  // 20

// 等同於
int max2;
if (a > b) {
    max2 = a;
} else {
    max2 = b;
}

更多範例請參考 Java 三元運算子

位元運算子

運算子說明
&位元 AND
|位元 OR
^位元 XOR
~位元 NOT
<<左移
>>右移(帶符號)
>>>右移(無符號)
int a = 5;   // 0101
int b = 3;   // 0011

System.out.println(a & b);   // 1  (0001)
System.out.println(a | b);   // 7  (0111)
System.out.println(a ^ b);   // 6  (0110)
System.out.println(~a);      // -6
System.out.println(a << 1);  // 10 (1010)
System.out.println(a >> 1);  // 2  (0010)

運算子優先順序

從高到低:

  1. () 括號
  2. ++ -- ! ~ 一元運算子
  3. * / % 乘除餘
  4. + - 加減
  5. << >> >>> 位移
  6. < <= > >= 比較
  7. == != 相等
  8. & ^ | 位元
  9. && || 邏輯
  10. ?: 三元
  11. = += -= 賦值
int result = 2 + 3 * 4;    // 14(先乘後加)
int result2 = (2 + 3) * 4; // 20(括號優先)

建議使用括號明確表達運算順序,增加程式碼可讀性。