零基礎學Java之Java學習筆記(四):運算符

算術運算符:

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

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