java中的運算子
阿新 • • 發佈:2020-08-01
算術運算子
- +
- -
- *
- /
- ++
- --
++出現在變數後,會先做賦值運算,再自加1
1 1 int m = 20; 2 2 int n = m++; 3 3 //最後結果 n = 20 m = 21
++出現在變數之前,會先進行自加1的運算,然後再賦值
1 int x = 50; 2 int y = ++x; 3 //x = y = 51 4 5 int num = 10; 6 num++; 7 ++num; 8 //這兩條語句是一樣的 都是一條語句,";"分號結束
註解:++無論出現在變數前還是後,只要++運算結束,";"分號結束,一定會自加1
一個例子:
1 int i = 0;2 i = i++; 3 System.out.println(i); //執行結束後,i=0 4 //i = i++底層實現 5 int temp = i; 6 i = (int)(i+1); 7 i = temp;
解釋 | |
---|---|
& | 邏輯與(並且) |
| | 邏輯或(或者) |
! | 邏輯非(取反) |
&& | 短路與 |
|| | 短路或 |
^ |
注意:邏輯運算子兩邊要求都是布林型別,並且最終的運算結果也是布林型別
& 兩邊都是true,結果才是true。
| 一邊是true,結果就是true。
"&&" 和 "||" 實際上和 "& "和 "|" 運算結果完全相同,區別在於:&& 和 || 有短路現象。
左邊的為false的時候:&& 短路了(後面的不執行)
左邊為true的時候:|| 短路了。(後面的不執行)
註解:效率方面來說&&比&效率高
符號 | 解釋 |
---|---|
& | 與 |
| | 或 |
^ | 異 |
<< | 左位移 註解:二進位制左移多少位,每左移一位便乘以2(在一定範圍內),不管是正數還是負數 |
>> | 右位移(有符號右移) 註解:二進位制右移多少位,每右移一位便除以2(在一定範圍內),最高位是什麼就用什麼補,如:最高位為1則用1補,為0用0補 |
>>> | 無符號右移 註解:最高位無論為什麼都用0補 |
1 byte x = 100; // byte最大值127 2 x += 1000; // 編譯可以通過,x變數還是byte型別,只不過損失精度 3 x += 1000; 4 //底層為:x = (byte)(x + 1000); 5 int i = 10; 6 i += 10; // 底層:i = (int)(i + 10);
int a=5; System.out.println("a="+((a<5)?10.9:9))//結果為9.0 //註解:值1和值2如果型別不一樣,哪個大就向哪個轉型
例子:
char x='x'; int i=10; System.out.println(false?i:x);//結果為120 System.out.println(false?100:x);//結果為x System.out.println(true?x:65535);//結果為x System.out.println(true?x:65536);//結果為120
註解:使用三目運算子 char和數字直接比較 當數字(int型別)不超過65535時輸出是char型別'x',超過65535時輸出的是int型別
-
’+‘ 運算子在java中有兩個作用(作用1:求和, 作用2:字串拼接)
-
當 + 運算子兩邊都是數字型別的時候,求和,當 + 運算子兩邊的任意一邊時字串型別,那麼這個+會進行字串拼接操作