public class demo1
}
結果如下:
a && b = false短路運算a || b = true
!a = false
&&和||的短路運算,是指如果前面的判斷條件已經明確結果則不執行後面的判斷
例如:
public class demo1
}
結果如下:
b = false當判斷到(a<9)為假時,將不再執行後面的運算判斷,即(a++<9)沒有被執行a = 10
c = true
a = 9
&、&&的區別
&&執行短路運算,效率比&高,只要&&左邊存在false,右邊不執行;
&物理左邊是false還是true,右邊都執行。
注:同理可得|和||的區別
注:以下資料型別預設為byte-8位
&:與運算,即如果對應位都是1得1,否則為0
例如:0010 1101
& 0110 0111
0010 0101
| :或運算,即如果對應位都是0為0,否則為1
例如:0010 1101
| 0110 0111
0110 1111
^:異或運算,即對應位相同則為0,不相同則為1
例如:0010 1101
^ 0110 0111
0100 1010
~:取反運算,即原位為1,取反後為0,反之亦然
a =0011 1010
~a=1100 0101
<<:表示將運算元左移一位,不分正負數,並在低位補0
byte a = 8;
system.out.println(a<<2);
正數a=8
8的二進位制補碼:0000 1000
a<<2,即為8的二進位制補碼左移兩位後得到:0010 0000
0010 0000轉換為十進位制:a<<2 = 32
左移運算子《可看作是運算元乘以n次2
如上a<<2可以看作為a*2*2,但是使用左移運算子是比直接用*運算子要快的,因為這樣是直接對底層二進位制數進行運算,效率更高
!!注意二進位制數範圍(byte為-128——127)
>>:表示將運算元右移一位,如果運算元為正數,高位補0;負數則高位補1
——————————————————————右移運算子》可看作是運算元除以n次2
正數a=8
8的二進位制補碼:0000 1000
a>>2,即為8的二進位制補碼左移兩位後得到:0000 0010
0010 0000轉換為十進位制:a>>2 = 2
負數a=-20
-20的二進位制原碼為:1001 0100
反碼為:1110 1011(除最高位符號位,其餘位取反)
補碼為:1110 1100(反碼+1)
右移兩位後的補碼為:1111 1011
反碼為:1111 1010
原碼為:1000 0101
a>>2結果為:-5
>>>:表示無符號右移,也稱為「邏輯右移」,即若運算元為正,則高位補0;若運算元為負,則右移後高位同樣補0
正數a>>>2的結果與a>>2的結果是一樣的
負數a=-24
注:以下資料型別預設為int 32位
-24原碼:10000000 00000000 00000000 00011000
反碼:11111111 11111111 11111111 11100111
補碼:11111111 11111111 11111111 11101000
右移2位:0011111111 11111111 11111111 111010
a>>>2=1073741818
邏輯運算子和位運算子
邏輯與 當且僅當左右兩個關係表示式均為true時返回true,否則返回false。邏輯或 當且僅當左右兩個關係表示式均為false時返回true,否則返回true。邏輯非!單目運算子,對關係表示式取反。與 兩個運算元二進位制形式的對應位中均為1時,相應的位返回1,否則返回0.例如128 129,返回...
基本運算子 邏輯運算子 位運算子等 學習筆記
冪運算 2 3 double pow math.pow 2,3 冪運算 boolean a true boolean b false system.out.println a b a b 邏輯與運算 兩個變數都為真,結果才為true system.out.println a b a b 邏輯或運算 ...
邏輯運算子與位運算子
1.運算子 用於對邏輯值的取反運算。當邏輯值為true時,經過取反變為false 當邏輯值為false時取反成true。2.運算子 運算子 用於對邏輯值進行異或運算。當運算兩側同時為true或false時,運算結果為false,否則為true。3.運算子 和 運算子 和 均用於邏輯與運算。當兩側同時...