計算機的最基本用途之一就是執行數學運算,作為一門計算機語言,Java也提供了一套豐富的運算符來操縱變量。我們可以把運算符分成以下幾組:
- 算術運算符
- 關系運算符
- 位運算符
- 邏輯運算符
- 賦值運算符
- 其他運算符
算術運算符
算術運算符用在數學表達式中,它們的作用和在數學中的作用一樣。下表列出了所有的算術運算符。
操作符 | 描述 |
---|---|
+ | 加法 - 相加運算符兩側的值 |
- | 減法 - 左操作數減去右操作數 |
* | 乘法 - 左操作數減去右操作數 |
/ | 除法 - 左操作數除以右操作數 |
% | 取模 - 左操作數除右操作數的余數 |
++ | 自增 - 操作數的值增加1 |
-- | 自減 - 操作數的值減少1 |
算術運算符案例:
int a = 100;
int b = 5;
int sum;
//加法運算
sum = a + b;
System.out.println("加法運算:" + sum);
//減法運算
sum = a - b;
System.out.println("減法運算:" + sum);
//乘法運算
sum = a * b;
System.out.println("乘法運算:" + sum);
//除法運算
sum = a / b;
System.out.println("除法運算:" + sum);
//取模運算sum = a % b;
System.out.println("取模運算:" + sum);
//自增運算sum = a ++;
System.out.println("自增運算:" + sum);
//自減運算sum = -- b;
System.out.println("自減運算:" + sum);
關系運算符
運算符 | 描述 |
---|---|
== | 檢查如果兩個操作數的值是否相等,如果相等則條件為真。 |
!= | 檢查如果兩個操作數的值是否相等,如果值不相等則條件為真。 |
> | 檢查左操作數的值是否大于右操作數的值,如果是那么條件為真。 |
< | 檢查左操作數的值是否小于右操作數的值,如果是那么條件為真。 |
>= | 檢查左操作數的值是否大于或等于右操作數的值,如果是那么條件為真。 |
<= | 檢查左操作數的值是否小于或等于右操作數的值,如果是那么條件為真。 |
關系運算符例子
if(a == b){
System.out.println("a == b : " + (a == b));
}else {
System.out.println("a != b : " + (a != b));
}
if (a > b){
System.out.println("a > b : " + (a > b));
}else {
System.out.println("a < b : " + (a < b));
}
if (a >= b){
System.out.println("a >= b : " + (a >= b));
}else {
System.out.println("a <= b" + (a <= b));
}
位運算符
Java定義了位運算符,應用于整數類型(int),長整型(long),短整型(short),字符型(char),和字節型(byte)等類型。
位運算符作用在所有的位上,并且按位運算。
操作符 | 描述 |
---|---|
& | 按位與操作符,當且僅當兩個操作數的某一位都非0時候結果的該位才為1。 |
| | 按位或操作符,只要兩個操作數的某一位有一個非0時候結果的該位就為1。 |
^ | 按位異或操作符,兩個操作數的某一位不相同時候結果的該位就為1。 |
~ | 按位補運算符翻轉操作數的每一位。 |
<< | 按位左移運算符。左操作數按位左移右操作數指定的位數。 |
>> | 按位右移運算符。左操作數按位右移右操作數指定的位數。 |
>>> | 按位右移補零操作符。左操作數的值按右操作數指定的位數右移,移動得到的空位以零填充。 |
位運算案例:
int a = 60; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */
System.out.println("a & b = " + c );
c = a | b; /* 61 = 0011 1101 */
System.out.println("a | b = " + c );
c = a ^ b; /* 49 = 0011 0001 */
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
System.out.println("a >>> 2 = " + c );
邏輯運算符
操作符 | 描述 |
---|---|
&& | 稱為邏輯與運算符。當且僅當兩個操作數都為真,條件才為真。 |
|| | 稱為邏輯或操作符。如果任何兩個操作數任何一個為真,條件為真。 |
! | 稱為邏輯非運算符。用來反轉操作數的邏輯狀態。如果條件為true,則邏輯非運算符將得到false。 |
邏輯運算案例:
boolean a = true;
boolean b = false;
System.out.println("a && b = " + (a&&b));
System.out.println("a || b = " + (a||b) );
System.out.println("!(a && b) = " + !(a && b));
賦值運算符
操作符 | 描述 |
---|---|
= | 簡單的賦值運算符,將右操作數的值賦給左側操作數 |
+= | 加和賦值操作符,它把左操作數和右操作數相加賦值給左操作數 |
-= | 減和賦值操作符,它把左操作數和右操作數相減賦值給左操作數 |
*= | 乘和賦值操作符,它把左操作數和右操作數相乘賦值給左操作數 |
/= | 除和賦值操作符,它把左操作數和右操作數相除賦值給左操作數 |
%= | 取模和賦值操作符,它把左操作數和右操作數取模后賦值給左操作數 |
<<= | 左移位賦值運算符 |
>>= | 右移位賦值運算符 |
&= | 按位與賦值運算符 |
^= | 按位異或賦值操作符 |
|= | 按位或賦值操作符 |
條件運算符
條件運算符也被稱為三元運算符。該運算符有3個操作數,并且需要判斷布爾表達式的值。該運算符的主要是決定哪個值應該賦值給變量。
variable x = (expression) ? value if true : value if false
條件運算符案例
//條件運算符
sum = a > b ? a : b;
System.out.println(sum);
instanceOf 運算符
該運算符用于操作對象實例,檢查該對象是否是一個特定類型(類類型或接口類型)。
instanceof運算符使用格式如下:
( Object reference variable ) instanceOf (class/interface type)
案例:
String name = "小明";
Boolean flay = name instanceof String;
System.out.println(flay);
Java運算符優先級
類別 | 操作符 | 關聯性 |
---|---|---|
后綴 | () [] .(點操作符) | 左到右 |
乘性 | * / % | 從右到左 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
關系 | >>= <<= | 左到右 |
相等 | == != | 左到右 |
按位與 | & | 左到右 |
按位異或 | ^ | 左到右 |
按位或 | | | 左到右 |
邏輯與 | && | 左到右 |
邏輯或 | || | 左到右 |
條件 | ?: | 從右到左 |
賦值 | = += -= *= /= %= >>= <<= &= ^= |= | 從右到左 |
逗號 | , | 左到右 |