1. 程式人生 > 實用技巧 >java中的運算子

java中的運算子

算術運算子

  • +
  • -
  • *
  • /
  • ++
  • --

++出現在變數後,會先做賦值運算,再自加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就是false,不可能是其他值

邏輯運算子

符號解釋
& 邏輯與(並且)
| 邏輯或(或者)
! 邏輯非(取反)
&& 短路與
|| 短路或
^ 異或(相同為false,不同為true)

注意:邏輯運算子兩邊要求都是布林型別,並且最終的運算結果也是布林型別

& 兩邊都是true,結果才是true。

| 一邊是true,結果就是true。

"&&" 和 "||" 實際上和 "& "和 "|" 運算結果完全相同,區別在於:&& 和 || 有短路現象。

左邊的為false的時候:&& 短路了(後面的不執行)

左邊為true的時候:|| 短路了。(後面的不執行)

註解:效率方面來說&&比&效率高

位運算子

符號解釋
&
|
^
<< 左位移 註解:二進位制左移多少位,每左移一位便乘以2(在一定範圍內),不管是正數還是負數
>> 右位移(有符號右移) 註解:二進位制右移多少位,每右移一位便除以2(在一定範圍內),最高位是什麼就用什麼補,如:最高位為1則用1補,為0用0補
>>> 無符號右移 註解:最高位無論為什麼都用0補

註解: &、|、^:前後兩者都是 boolean型別值時,此符號為邏輯運算子,前後兩者都是數值時,此符號為 位運算子

例子:

用最有效率的方式計算出4*8的結果

使用位運算(而位運算cpu直接支援的,效率最高)

2<<5或者4<<3

賦值運算子

  • =
  • +=
  • -=
  • *=
  • /=
  • %=

註解:使用擴充套件運算子的時候,永遠都不會改變運算結果型別

例子:

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); 

條件運算子(三目運算子)

語法格式:

  布林表示式 ? 表示式1 : 表示式2

布林表示式為true,選擇表示式1作為結果。反之選擇表示式2作為結果

小知識

例子:

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型別

字串連線運算子

+ 運算子

  1. ’+‘ 運算子在java中有兩個作用(作用1:求和, 作用2:字串拼接)

  2. 當 + 運算子兩邊都是數字型別的時候,求和,當 + 運算子兩邊的任意一邊時字串型別,那麼這個+會進行字串拼接操作

    註解:字串拼接完成之後的結果還是一個字串