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)
運算子優先順序
從高到低:
()括號++--!~一元運算子*/%乘除餘+-加減<<>>>>>位移<<=>>=比較==!=相等&^|位元&&||邏輯?:三元=+=-=賦值
int result = 2 + 3 * 4; // 14(先乘後加)
int result2 = (2 + 3) * 4; // 20(括號優先)
建議使用括號明確表達運算順序,增加程式碼可讀性。