+(正號)、-(負號)、++(遞增)、--(遞減)+ - * / %(取餘)a > b ? true : false — 條件運算子,含關係運算子、?、: 兩個運算元== != > < >= <=
結果為 boolean。
&(AND):同為 1 → 1|(OR):任一為 1 → 1^(XOR):不同 → 1~(NOT):0↔1 翻轉例:1100 & 1010 = 1000、1100 | 1010 = 1110、1100 ^ 1010 = 0110
&&(短路 AND)||(短路 OR)!(NOT)&、| 也可用於 boolean,但不短路(兩邊皆運算)= += -= *= /= %= &= ^= |= <<= >>= >>>=
雙目,左邊為物件,右邊為類別/介面。物件為右邊型別(含子類別/實作介面)的實例 → true。
<<:帶號左移(低位補 0)>>:帶號右移(高位補符號位)>>>:無號右移(高位補 0)例:8 >>> 2 = 2(00001000 → 00000010)
[] () ++ -- ! ~ instanceof * / % + - << >> >>>
< <= > >= == != & ^ | && || ?: = += -= ...
建議:多用括號明確運算順序,提升可讀性,避免靠記憶優先順序。
byte/short/char 參與運算自動提升為 int;有 long 則提升為 long。結果永不為 byte/short/char。Integer.MAX_VALUE + 1 = Integer.MIN_VALUE)。String,另一邊自動 toString()。編譯器轉為 StringBuilder.append() 鏈。arr[index],索引 0 ~ length-1。%(a % b == a - ((int)(a/b))*b)。單精度運算得單精度,含雙精度則雙精度。& | ^ ! && ||,短路特性同邏輯運算子。int[] a = {1,2,3};
if (a[0]==2 & a[3]==4) // 兩邊皆運算 → ArrayIndexOutOfBoundsException
if (a[0]==2 && a[3]==4) // 左邊 false → 短路,不運算右邊,安全
& 不短路,&& 短路。同理 | vs ||。