| 優先級 | 運算子 | 結合性 |
|---|---|---|
| 1 | () [] . | 左→右 |
| 2 | ! +(正) -(負) ~ ++ -- | 右→左 |
| 3 | * / % | 左→右 |
| 4 | +(加) -(減) | 左→右 |
| 5 | << >> >>> | 左→右 |
| 6 | < <= > >= instanceof | 左→右 |
| 7 | == != | 左→右 |
| 8 | & (位元 AND) | 左→右 |
| 9 | ^ (位元 XOR) | 左→右 |
| 10 | | (位元 OR) | 左→右 |
| 11 | && (邏輯 AND) | 左→右 |
| 12 | || (邏輯 OR) | 左→右 |
| 13 | ?: (條件) | 右→左 |
| 14 | = += -= *= /= %= &= |= ^= ~=<<= >>= >>>= | 右→左 |
3+-4 視為 3+(-4))instanceof:判斷物件是否為某類/介面型別&(位元與)與 &&(邏輯與)實務開發中**不建議刻意利用優先級**,不確定處直接加括號:
// 難以一眼看懂優先級
int n = m << 1 + 2;
// 明確清晰,閱讀維護零負擔
int n = m << (1 + 2);
這樣寫:① 避免優先級誤解 ② 降低閱讀認知負荷 ③ 利於團隊協作與長期維護。