運算子指明對運算元執行運算。依運算元個數分:一元(如 ++, -)、二元(如 +, >)、三元(?:)。依功能分七大類,本章講述前六類:
作用於整數或浮點數資料。
| 運算子 | 用法 | 說明 |
|---|---|---|
| + | op1+op2 | 加法 |
| - | op1-op2 | 減法 |
| * | op1*op2 | 乘法 |
| / | op1/op2 | 除法 |
| % | op1%op2 | 取模(求餘) |
擴充功能:+ 可串接字串("abc"+"de" → "abcde"),第七章詳述。
差異:% 運算元可為浮點數(如 37.2%10 = 7.2),C/C++ 僅限整數。
| 運算子 | 用法 | 說明 |
|---|---|---|
| + | +op | 正值 |
| - | -op | 負值 |
| ++ | ++op / op++ | 加 1 |
| -- | --op / op-- | 減 1 |
i++:先使用 i 值,再使 i 加 1。表達式值為舊 i,i 變為 i+1++i:先使 i 加 1,再使用。表達式值與 i 均為 i+1i--、--i 同理public class ArithmaticOp {
public static void main(String args[]) {
int a = 5+4; // 9
int b = a*2; // 18
int c = b/4; // 4
int d = b-c; // 14
int e = -d; // -14
int f = e%4; // -2
double g = 18.4;
double h = g%4; // 2.4
int i = 3;
int j = i++; // i=4, j=3
int k = ++i; // i=5, k=5
// 列印所有變數...
}
}
輸出驗證各運算結果。
比較兩值,回傳 true/false(非 C/C++ 的 1/0)。皆為二元運算子:
| 運算子 | 用法 | 回傳 true 條件 |
|---|---|---|
| > | op1>op2 | op1 大於 op2 |
| >= | op1>=op2 | op1 大於等於 op2 |
| < | op1| op1 小於 op2 | |
| <= | op1<=op2 | op1 小於等於 op2 |
| == | op1==op2 | op1 等於 op2 |
| != | op1!=op2 | op1 不等於 op2 |
特性:任意資料類型(基本與複合)皆可用 ==/!= 比較相等性(異於 C/C++)。常與布林邏輯運算子搭配作流程控制判斷條件。
真值表:
| op1 | op2 | op1&&op2 | op1||op2 | !op1 |
|---|---|---|---|---|
| false | false | false | false | true |
| false | true | false | true | true |
| true | false | false | true | false |
| true | true | true | true | false |
&&, ||:二元,邏輯與/或!:一元,邏輯非|| 左側為 true 則不算右側;&& 左側為 false 則不算右側public class RelationAndConditionOp {
public static void main(String args[]) {
int a=25, b=3;
boolean d = a5) System.out.println("a/e = " + a/e); // 執行,輸出 8
int f=0;
if(f!=0 && a/f>5) System.out.println("a/f = " + a/f); // f!=0 為 false,短路避免除零錯誤
else System.out.println("f = " + f); // 輸出 0
}
}
操作二進制位。除 ~ 為一元外皆為二元。運算元限整數與字元型別。
Java 使用補碼:最高位為號位(0 正、1 負)。正數最高位 0,其餘位表數值(如 +42 → 00101010)。負數將絕對值補碼逐位取反再加 1(-42 → 11010110)。0 補碼唯一(00000000),-1 為 11111111。
逐位翻轉:0010101 → 1101010。注意 ~21 ≠ -21。
對應位皆為 1 結果才為 1:0&0=0, 0&1=0, 1&0=0, 1&1=1
(本章內容未完,後續包含位元或 |、位元異或 ^、位移 >> << >>>、指派運算子 &= |= ^= 等、條件運算子 ?: 等)