1.3 java運算符

1.算術運算符:+ - * / %
負號參加運算時,只參考被除數,被模數。

連接符:+ 運算順序從左打右
System.out.print(3 + “2”); // 32
任何數和字符串”相加”都是相連接。

自增/自減符:++ - -
b = a++ : 先把a的值預存到內存,a++自增後a的值加1,然後用預存的值去參與其他運算。
b = ++a:先運算++,然後把自增後的a賦值給b。

面試題:
int i = 3;
i = i++;
System.out.println(i); // i = 3

內存執行過程:
temp = i;
i = i + 1;
i = temp;

2.賦值運算符:= += -= *= /= %=
a /= 2: a = a/2

面試題:
short s= 3// 正常,一次運算。
s += 4;      //正常,也是賦值運算,一次運算,進行檢查判斷int型s+4是否在short範圍內,如果在,進行自動轉換。(不用做強轉)
s = s + 4;   //出錯,兩次運算,s不確定的值,編譯無法進行檢查判斷s+4是否超出short範圍,報錯精度丟失。(或者右邊的s+4爲int型4個字節,賦值給short型2個字節需要強轉)

3.比較運算符:== != < > <= >= instanceof (檢查是否是類的對象,‘Hello’instanceof String)
運算完肯定有結果,結果爲true/false。

邏輯運算符:用於連接兩個boolean類型的表達式
& 與 有false爲false,左右都參與運算
| 或 有true爲true,左右都參與運算
^ 異或 兩邊結果一樣爲false
! 非 結果相反

面試題:
&& 雙與   如果左邊爲假,右邊不判斷
||     雙或   如果左邊爲真,右邊不判斷

4.位運算符:運算更高效

左移:<<     *2^n    都用0補位
右移:>>      /2^n 負數最高位用1補
無符號右移:>>>  /2^n  都用0補位
&:  二進制位與運算,都爲1時,結果才爲1
|:    二進制或運算,都爲0時,結果才爲0
^:   二進制異或運算,操作數不一樣時,結果才爲1

練習:
1.2*8 : 2<<3
2.交換兩個數,不通過第三方變量:

a = a + b;
b = a - b;
a = a - b;   //這種方式不要用,而過兩個整數的數值過大,會超出int範圍,會自動強制轉換,數據會變化。

面試的時候(閱讀性差):
a = a^b;
b = a^b;    //異或兩次等於還原
a = a^b;

開發時,使用第三方變量的形式,因爲閱讀性強:
int c;
c= a;
a= b;
b =c;

5.三元運算符:(條件表達式) 表達式1 表達式2;
運算符肯定有結果。
例子:比較三個數較大的整數:

int o,p,q;
int temp = o > p? o : p ;
int max = temp > q ? temp : q ;
發佈了36 篇原創文章 · 獲贊 0 · 訪問量 4582
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章