算術運運算元: +,-,*,/,%,++,–
字串連線運運算元:+
關係(比較)運運算元: >,<,>=,<=,==,!=
邏輯運運算元: !,& , | , &&,||
賦值運運算元: = ,+ =,- =,* =,/ =
條件運運算元:(boolean達式)?(表示式1):(表示式2)
位運運算元:<< , >> , >>>, & , | , ^ , ~
運運算元 | 運算 | 範例 | 結果 |
---|---|---|---|
+ | 正號 | +3 | 3 |
- | 負號 | b=4; -b | -4 |
+ | 加 | 5+5 | 10 |
- | 減 | 6-4 | 2 |
***** | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模 | 7%5 | 2 |
++ | 自增(前):先運算後取值 自增(後):先取值後運算 | 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。
注意:比較運運算元「==」不能誤寫成「=」 。
邏輯運運算元:
&—邏輯與 | —邏輯或 !—邏輯非
&& —短路與 || —短路或 ^ —邏輯互斥或
a | b | a&b | a|b | !a | a^b | a&&b | a||b |
---|---|---|---|---|---|---|---|
true | true | true | true | false | false | true | true |
true | false | false | true | false | true | false | true |
false | true | false | true | true | true | false | true |
false | false | false | false | true | false | false | false |
「&」和「&&」的區別:
單&時,左邊無論真假,右邊都進行運算;
雙&時,如果左邊為真,右邊參與運算,如果左邊為假,那麼右邊不參與運算。
「|」和「||」的區別同理,||表示:當左邊為真,右邊不參與運算。
互斥或( ^ ):當左右都為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 += b | a = a+b |
-= | a -= b | a = a-b |
*= | a *= b | a = a*b |
/= | a /= b | a = a/b |
%= | a %= b | a = 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 |
| ~ | 正數取反,各二進位制碼按二補數各位取反 負數取反,各二進位制碼按二補數各位取反 |
表示式的運算順序