算術運算子:

算術運算子是對數值型別的變數進行運算的,在 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)不要背,使用多了,就熟悉了

總結:①(),{}等②單目運算 ++--③算術運算子④位移運算子⑤比較運算子⑥邏輯運算子⑦三元運算子⑧賦值運算子