Java 提供 5 大基礎算術運算符:+(加)、-(減)、*(乘)、/(除)、%(取模/餘數)。
byte、short、char 運算時自動提升為 intlong > float > doublebyte a = 10, b = 20;
// byte c = a + b; // 編譯錯誤:int 無法隱式轉 byte
byte c = (byte)(a + b); // 正確:強制轉型
5 / 2 = 2(截斷小數位)a % b 符號跟隨被除數,-5 % 2 = -1Infinity 或 NaN>、<、>=、<=、==、!=
| 特性 | C 語言 | Java |
|---|---|---|
| 結果類型 | int(0/1) | boolean(true/false) |
| 短路求值 | 支持 && || | 支持 && ||,邏輯運算結果同為 boolean |
public class RelationalDemo {
public static void main(String[] args) {
System.out.println("10 > 5 = " + (10 > 5)); // true
System.out.println("10 >= 5 = " + (10 >= 5)); // true
System.out.println("10 < 5 = " + (10 < 5)); // false
System.out.println("10 <= 5 = " + (10 <= 5)); // false
System.out.println("10 == 5 = " + (10 == 5)); // false
System.out.println("10 != 5 = " + (10 != 5)); // true
}
}
| 運算符 | 名稱 | 規則 | 示例 (1=01, 2=10) |
|---|---|---|---|
& | 按位與 | 同為1才為1 | 1 & 2 = 0 (01 & 10 = 00) |
| | 按位或 | 有一個1即為1 | 1 | 2 = 3 (01 | 10 = 11) |
^ | 按位異或 | 不同為1,相同為0 | 1 ^ 2 = 3 (01 ^ 10 = 11) |
~ | 按位取反 | 0↔1 逐位翻轉 | ~1 = -2 (補碼表示) |
public class BitwiseTruthTable {
public static void main(String[] args) {
System.out.println("--- AND ---");
System.out.println("0 & 0 = " + (0 & 0));
System.out.println("0 & 1 = " + (0 & 1));
System.out.println("1 & 0 = " + (1 & 0));
System.out.println("1 & 1 = " + (1 & 1));
System.out.println("\n--- OR ---");
System.out.println("0 | 0 = " + (0 | 0));
System.out.println("0 | 1 = " + (0 | 1));
System.out.println("1 | 0 = " + (1 | 0));
System.out.println("1 | 1 = " + (1 | 1));
System.out.println("\n--- XOR ---");
System.out.println("0 ^ 0 = " + (0 ^ 0));
System.out.println("0 ^ 1 = " + (0 ^ 1));
System.out.println("1 ^ 0 = " + (1 ^ 0));
System.out.println("1 ^ 1 = " + (1 ^ 1));
System.out.println("\n--- NOT ---");
System.out.println("~0 = " + (~0)); // -1
System.out.println("~1 = " + (~1)); // -2
}
}
(n & 1) == 1 比 n % 2 != 0 更快n << 1 ≡ n*2,n >> 1 ≡ n/2a ^= b; b ^= a; a ^= b;(前文詳述)if (permission & READ) != 0 檢查讀權限boolean,不可當 int 用&& || 遇真/假即停,可用於防空指針 obj != null && obj.method()