Java語法細節(2)

1、邏輯運算符 &和&&,|和||的區別

&&:和&的結果是一樣的,但運算過程有區別

    &&:只要左邊結果爲假,就不再執行右邊的,結果爲假

    & :無論左邊的運算結果是什麼,右邊的都參與運算

||:和|的結果是一樣的,但運算過程有區別

    ||:只要左邊結果爲真,就不再執行右邊的,結果爲真

    | :無論左邊的運算結果爲什麼,右邊的都參與運算

2、邏輯運算符^(異或)的用法

^ : 符號兩邊的結果如果相同,則結果爲假。符號兩邊的結果如果不同,則結果爲真。

    異或運算特點:一個數據對同一個數異或兩次,結果仍是原本的數。

需求:實現兩個整數的互換,不能引入第三個變量。

int a = 10, b = 2;
a = a^b;   //a = 10^2
b = a^b;   //b = (10^2)^2=10
a = a^b;   //a = (10^2)^10=2
3、<<、>>和>>>運算符的使用

    用<<和>>運算符可以實現對2的倍數運算的優化。向左移幾位就代表着乘以2的幾次方,向右移幾位代表着對2的幾次方取餘。

需求:用最有效率的方式算出2乘以8等於幾?

2<<3;

(1)在使用<<運算符時,數據向高位移動,低位補0,高位被移出數據有效位的捨棄。此處注意符號位一起移動

(2)在使用>>運算符時,數據向低位移動,高位用符號位補位。

(3)在使用>>>(無符號右移)運算符時,數據向低位移動,高位用0補位。

注意:負數的二進制是對應正數的二進制取反加1。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章