Java中常見的運運算元

2020-10-16 12:00:46

Java中常見的運運算元

Java 語言支援如下運運算元:

算術運運算元: +,-,*,/,%,++,–

字串連線運運算元:+

關係(比較)運運算元: >,<,>=,<=,==,!=

邏輯運運算元: !,& , | , &&,||

賦值運運算元: = ,+ =,- =,* =,/ =

條件運運算元:(boolean達式)?(表示式1):(表示式2)

位運運算元:<< , >> , >>>, & , | , ^ , ~

算數運運算元

運運算元運算範例結果
+正號+33
-負號b=4; -b-4
+5+510
-6-42
*****3*412
/5/51
%取模7%52
++自增(前):先運算後取值 自增(後):先取值後運算a=2;b=++a;a=2;b=a++;a=3;b=3a=3;b=2
- -自減(前):先運算後取值 自減(後):先取值後運算a=2;b=- -a;a=2;b=a- -;a=1;b=1a=1;b=2

練習:

 public static void main(String[] args){
        int i1 = 10,i2 = 20;
        int i = i1++;
        System.out.print("i="+i);//10
        System.out.println("i1="+i1);//11
        i = ++i1;
        System.out.print("i="+i);//12
        System.out.println("i1="+i1);//12

        i = i2--;
        System.out.print("i="+i);//20
        System.out.println("i2="+i2);//19
        i = --i2;
        System.out.print("i="+i);//18
        System.out.println("i2="+i2);//18
  }

比較運運算元

運運算元運算 範例 結果
==相等於 4==3 false
!=不等於 4!=3 true
<小於 4<3 false
>大於 4>3 true
<=小於等於 4<=3 false
>=大於等於 4>=3 true
instanceof檢查是否是類的物件 「Hello」 instanceof String true

比較運運算元的結果都是boolean型,也就是要麼是true,要麼是false。

注意:比較運運算元「==」不能誤寫成「=」 。

邏輯運運算元

邏輯運運算元:

&—邏輯與 | —邏輯或 !—邏輯非
&& —短路與 || —短路或 ^ —邏輯互斥或

aba&ba|b!aa^ba&&ba||b
truetruetruetruefalsefalsetruetrue
truefalsefalsetruefalsetruefalsetrue
falsetruefalsetruetruetruefalsetrue
falsefalsefalsefalsetruefalsefalsefalse

「&」和「&&」的區別:
單&時,左邊無論真假,右邊都進行運算;
雙&時,如果左邊為真,右邊參與運算,如果左邊為假,那麼右邊不參與運算。
「|」和「||」的區別同理,||表示:當左邊為真,右邊不參與運算。

互斥或( ^ ):當左右都為true時,結果為false。
理解:互斥或,追求的是「異」!

賦值運運算元

符號:=
當「=」兩側資料型別不一致時,可以使用自動型別轉換或使用強制型別轉換原則進行處理。支援連續賦值。

擴充套件賦值運運算元: +=, -=, *=, /=, %=

思考1:

short s = 3; // 3是int  但是虛擬機器器支援將int型別3賦給short,byte
s=s+2;   //①s是short +2(int) 結果為int
s+=2;    //②s=s+2
//①和②有什麼區別?
運運算元用法舉例等效的表示式
+=a += ba = a+b
-=a -= ba = a-b
*=a *= ba = a*b
/=a /= ba = a/b
%=a %= ba = a%b

思考2:

boolean b1 = false;//區分好==和=的區別。
if(b1=true){
	System.out.println("結果為真");
}else{
	System.out.println("結果為假");
}

思考3:

int i = 1;
i *= 0.1; i=i*0.1 = 0
System.out.println(i);//0
i++;
System.out.println(i);//1

條件運運算元

語法: (條件表示式)? 表示式1:表示式2;

為true,運算後的結果是表示式1;
為false,運算後的結果是表示式2;

表示式1和表示式2為同種型別

條件運運算元與if-else的聯絡與區別:
1)條件運運算元可簡化if-else語句
2)條件運運算元要求必須返回一個結果。
3)if後的程式碼塊可有多個語句

位運算

日常開發中位運算不是很常用,但是巧妙的使用位運算可以大量減少執行開銷,優化演演算法.

位運運算元用法
<<空位補0,被移除的高位丟棄,空缺位補0。
>>被移位的二進位制最高位是0,右移後,空缺位補0;最高位是1,空缺位補1。
>>>被移位二進位制最高位無論是0或者是1,空缺位都用0補。
&二進位制位進行&運算,只有1&1時結果是1,否則是0
|二進位制位進行 | 運算,只有0 | 0時結果是0,否則是1
^相同二進位制位進行 ^ 運算,結果是0;1^1=0 , 0^0=0 不相同二進位制位 ^ 運算結果是1。1^0=1 , 0^1=1
~正數取反,各二進位制碼按二補數各位取反 負數取反,各二進位制碼按二補數各位取反

運運算元優先順序

表示式的運算順序

1 |
| ~ | 正數取反,各二進位制碼按二補數各位取反 負數取反,各二進位制碼按二補數各位取反 |

運運算元優先順序

表示式的運算順序

在這裡插入圖片描述