只能操作**變數**,不可用於常數、運算式或 final 變數:
(a + b)++; // 錯誤
final int M = 1; M++; // 錯誤
5++; // 錯誤
| 寫法 | 變數值變化 | 整個式子的值 |
|---|---|---|
++n / --n | +1 / -1 | 變化**後**的值 |
n++ / n-- | +1 / -1 | 變化**前**的值 |
int n = 1, m = 1;
n++; // n=2,式子值=1
++m; // m=2,式子值=2
int k = n++; // n 初始 2 → n++ 值 2 → n=3, k=2
int j = ++m; // m 初始 2 → ++m 值 3 → m=3, j=3
int a = 0, b = 0;
a = b++; // a=0, b=1
a = ++b; // a=2, b=2
b = a++; // a=3, b=2
a = ++b; // a=3, b=3
建議:雖可簡化代碼,但增加閱讀難度,**不推薦在複雜表達式中混用前後置**。
int a = 0, b = 1, c = -5;
c = -a;
c = -(a + b);
條件式 ? 值1 : 值2
boolean條件 true → 取值1;false → 取值2。
int x = 10, y = 20;
int max = x > y ? x : y; // 取較大值
int a = -10;
int abs = a > 0 ? a : -a; // 求絕對值
提升括號內運算優先級,用法同數學:
int a = 1 + 2 * 3; // 7(先乘後加)
int a = (1 + 2) * 3; // 9(括號優先)
每個運算子都有優先級,括號可強制指定計算順序。