學而時習之,溫故而知新.
最近看到一個面試題,考察的是位移運算符,遺憾的是自己居然沒有想到,這裏特意回顧java的運算符.
java的運算符 有
賦值運算符,算術運算符,自增自減運算符,比較運算符,邏輯運算符,位移運算符,三元運算符,
1 賦值運算符
賦值運算符用 "=" 表示, 其功能就是就是將右邊的操作數所含的值賦給左邊的操作數
比如 int a=10; 該表達式是將10賦值給變量a
注意 = 與==的區別
= 是賦值運算符,我們使用=是賦值
==是比較運算符用來比較大小是否相等的
當然js以及微信小程序有=== 是判斷的是值及類型是否完全相等
2 算符運算符
3 自增自減運算符
++:自增運算法
-- :自減運算法
一般爲了方便記憶 把放在 前面的++a 成爲前++ 放到後面的a++成爲後++
++a 先+1 在運算
a++ 先運算在++
例如:
x = 2 * ++m 先運行 m = m + 1; 再運行 x = 2 * m; (前++)
x = 2 * m ++; 先運行 x = 2 * m; 再運行 m = m + 1;(後++)
--a 稱爲前 -- , 先減1在運算
a-- 稱爲後--, 先運算在
y = 2 * -- m 先運行 m = m - 1; 再運行 y = 2 * m;(前--)
y = 2 * -- m 先運行 m = m - 1; 再運行 y = 2 * m;(後--)
4 比較運算符
5 邏輯運算符
&& 邏輯與 表示2個條件都滿足的時候才走下一步,
|| 邏輯或 表示其中一個條件滿足,即可進行下一步,
! 邏輯非 ,條件相反的時候進行下一步,
5 位移運算符
<< : 左移運算符,num << 2,相當於num乘以2的2次冪
>> : 右移運算符,num >> 2,相當於num除以2的2次冪
>>> : 無符號右移,忽略符號位,空位都以0補齊 num>>>3 相當於num除以2的3次冪
其實位移運算符移動的是進制的數據
比如3 <<3 結果是3*2^3 =24
3 是十進制換成2進製爲0011 左移3位的結果是0011000 在換成10進製爲24
右移是一樣的24是10進制換成2進製爲0011000 右移3位 是0011 在換成10進制結果爲3
10進制換算2進制的示例圖(自己手畫的有點醜,哈哈)
6 三元運算符
三元運算符的格式:
條件式?值1:值2
例如 boolean a=10>11?true:false
運算符的優先級
面試題
一個數組爲{1,2,3,4,5,6}
現在要數組變爲{1*2,2*2*2,3*2*2*2,4*2*2*2*2,5*2*2*2*2*2,6*2*2*2*2*2*2}
這個題目考察的就是位移運算符,想到怎麼做了吧
int[] arr={1,2,3,4,5,6};
int temp=2;
for (int i=0;i<arr.length;i++){
arr[i] = arr[i]*temp;
temp = temp<< 1;
System.out.print(arr[i]+"\t");
}