算術運算子:
算術運算子是對數值型別的變數進行運算的,在 Java 程式中使用的非常多。
運算子 | 說明 | 例子 | 結果 |
+ | 加法-相加運算子兩側的值 | 9+9 | 18 |
- | 減法-左運算元減去右運算元 | 10-8 | 2 |
* | 乘法-相乘操作符兩側的值 | 7*8 | 56 |
/ | 除法-左運算元除以右運算元 | 9/9 | 1 |
% | 取餘-左運算元除以右運算元的餘數 | 11%9 | 2 |
++ |
自增(前):先運算後取值 自增(後):先取值後運算 |
a=2;b=++a; a=2;b=a++; |
a=3;b=3 a=3;b=2 |
-- |
自減(前):先運算後取值 自減(後):先取值後運算 |
a=2;b=--a; a=2;b=a--; |
a=1;b=1 a=1;b=2 |
算術運算子注意事項:
(1)對於除號"/",它的整數除和小數除是有區別的:整數之間做除法時,只保留整數部分而捨棄小數部分。
int x = 10/3;//結果是3
(2)當對一個數取模時,可以等價a%b=a-a/b*b,這樣我們看到取模的一個本質運算。
(3)當自增當做一個獨立語言使用時,不管是++i;還是i++;都是一樣的。
關係運算符(比較運算子):
運算子 | 說明 | 例子 | 結果 |
== | 檢查如果兩個運算元的值是否相等,如果相等則條件為真。 | 8==7 | false |
!= | 檢查如果兩個運算元的值是否相等,如果值不相等則條件為真。 | 8!=7 | true |
< | 檢查左運算元的值是否小於右運算元的值,如果是那麼條件為真。 | 8<7 | false |
> | 檢查左運算元的值是否大於右運算元的值,如果是那麼條件為真。 | 8>7 | true |
<= | 檢查左運算元的值是否小於或等於右運算元的值,如果是那麼條件為真。 | 8<=7 | false |
>= | 檢查左運算元的值是否大於或等於右運算元的值,如果是那麼條件為真。 | 8>=7 | true |
關係運算符注意事項:
(1)關係運算符組成的表示式,我們稱為關係表示式。eg:a > b
(2)比較運算子"=="不能誤寫成"="。==是關係運算符,判斷是不是相等,一個=是賦值
(3)關係運算符的結果都是 boolean 型,也就是要麼是 true,要麼是 false。
(4)關係表示式 經常用在 if 結構的條件中或迴圈結構的條件中
邏輯運算子:
用於連線多個條件(多個關係表示式),最終的結果也是一個 boolean 值。
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
true | true | true | true | true | true | false | false |
true | fasle | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true |
false |
邏輯運算規則:
(1) a&b : & 叫邏輯與:規則:當 a 和 b 同時為 true ,則結果為 true, 否則為 false
(2) a&&b : && 叫短路與:規則:當 a 和 b 同時為 true ,則結果為 true,否則為 false
(3) a|b : | 叫邏輯或,規則:當 a 和 b ,有一個為 true ,則結果為 true,否則為 false
(4) a||b : || 叫短路或,規則:當 a 和 b ,有一個為 true ,則結果為 true,否則為 false
(5) !a : 叫取反,或者非運算。當 a 為 true, 則結果為 false, 當 a 為 false 是,結果為 true
(6) a^b: 叫邏輯異或,當 a 和 b 不同時,則結果為 true, 否則為 false
&& 和 &基本規則:
短路與&& : 條件 1&&條件 2
兩個條件都為 true,結果為 true,否則 false
邏輯與&: 條件 1&條件 2
兩個條件都為 true,結果為 true,否則 false
對於&&短路與而言,如果第一個條件為 false ,後面的條件不再判斷
對於&邏輯與而言,如果第一個條件為 false ,後面的條件仍然會判斷
//&&短路與 使用
int age = 50;
if(age > 20 && age < 90) {
System.out.println("&&短路與的使用");
} //&邏輯與使用
if(age > 20 & age < 90) {
System.out.println("&邏輯與的使用");
}
&& 和 &使用區別:
(1) &&短路與:如果第一個條件為 false,則第二個條件不會判斷,最終結果為 false,效率高
(2) & 邏輯與:不管第一個條件是否為 false,第二個條件都要判斷,效率低
(3) 開發中, 我們使用的基本是使用短路與&&, 效率高
|| 和 | 基本規則:
短路或||: 條件 1||條件 2
兩個條件中只要有一個成立,結果為 true,否則為 false
|邏輯或: 條件 1|條件 2
只要有一個條件成立,結果為 true,否則為 false
||短路或:如果第一個條件為 true,則第二個條件不會判斷,最終結果為 true,效率高
| 邏輯或:不管第一個條件是否為 true,第二個條件都要判斷,效率低
// 短路或|| 的使用
int age = 50;
if(age > 20 || age < 30) {
System.out.println("短路或|| 的使用");
} // 邏輯或| 的使用
if(age > 20 | age < 30) {
System.out.println("邏輯或| 的使用");
}
|| 和 | 使用區別:
(1) ||短路或:如果第一個條件為 true,則第二個條件不會判斷,最終結果為 true,效率高
(2) | 邏輯或:不管第一個條件是否為 true,第二個條件都要判斷,效率低
(3) 開發中,我們基本使用 ||
! 取反 基本規則:
! 非(取反): !條件
如果條件本身成立,結果為 false,否則為 true
a^b: 叫邏輯異或,當 a 和 b 不同時,則結果為 true, 否則為 false
//! 操作是取反 T->F , F -> T
System.out.println(60 > 20); //T
System.out.println(!(60 > 20)); //F
^ 基本規則:
a^b: 叫邏輯異或,當 a 和 b 不同時,則結果為 true, 否則為 false
//a^b: 叫邏輯異或,當 a 和 b 不同時,則結果為 true, 否則為 false
boolean b = (10 > 1) ^ ( 3 > 5);
System.out.println("b=" + b);//T
賦值運算子:
賦值運算子就是將某個運算後的值,賦給指定的變數。
賦值運算子的分類:
基本賦值運算子: eg: int a = 10;
複合賦值運算子:+= ,-= ,*= , /= ,%= 等
eg:a += b; [等價 a = a + b; ] a -= b; [等價 a = a - b; ]
賦值運算子的特點:
(1) 運算順序從右往左 int num = a + b + c;
(2) 賦值運算子的左邊 只能是變數,右邊 可以是變數、表示式、常量值
int num = 20;
int num2= 78 * 34 - 10;
int num3 = a;
(3) 複合賦值運算子等價於下面的效果。比如:a+=3;等價於 a=a+3; 其他類推
(4) 複合賦值運算子會進行型別轉換。
byte b = 3;
b += 2; // 等價 b = (byte)(b + 2);
b++;// b = (byte)(b+1);
三元運算子:
語法:
條件表示式 ? 表示式 1: 表示式 2;
使用規則:
1. 如果條件表示式為 true,運算後的結果是表示式 1;
2. 如果條件表示式為 false,運算後的結果是表示式 2;
3. 表示式 1 和表示式 2 要為可以賦給接收變數的型別(或可以自動轉換)
4. 三元運算子可以轉成 if--else 語句
運算子優先順序:
類別 | 操作符 | 關聯性 |
符號 | () , ; . {} | 從左到右 |
乘、除、餘 | * / % | 從左到右 |
加、減 | + - | 從左到右 |
移位 | >> >>> << | 從左到右 |
關係 | > >= < <= | 從左到右 |
相等 | == != | 從左到右 |
按位與 | & | 從左到右 |
按位異或 | ^ | 從左到右 |
按位或 | | | 從左到右 |
邏輯與 | && | 從左到右 |
賦值 | = + = - = * = / =%= >> = << =&= ^ = | = | 從右到左 |
條件 | ?: | 從右到右 |
運算子優先順序規則:
(1)運算子有不同的優先順序,所謂優先順序就是表示式運算中的運算順序。
(2)只有單目運算子、賦值運算子是從右向左運算的。
(3)不要背,使用多了,就熟悉了
總結:①(),{}等②單目運算 ++--③算術運算子④位移運算子⑤比較運算子⑥邏輯運算子⑦三元運算子⑧賦值運算子