一、位运算符:~、&、|、^
•位运算是将数据先转化为二进制数补码形式,再逐位(bit)按规则计算。
~是按位非,把0变成1,把1变成0
&是按位与,全1则1,否则是0
|是按位或,全0则0,否则是1
^是按位异或,相同为0,不同为1
如:a=3,b=5,则:
a 0000 0000 0000 0011
b 0000 0000 0000 0101
~a 1111 1111 1111 1100
a&b 0000 0000 0000 0001
a|b 0000 0000 0000 0111
a^b 0000 0000 0000 0110
二、逻辑运算符:&&、||、!
逻辑运算符只能针对boolean类型进行逻辑运算,运算结果仍为boolean类型
&&:全为true才为true,否则为false
||:全为false才false,否则为true
!:把false 变为true,把true变为false
三、位运算符与逻辑运算符的区别:
逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。
逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。
以此代码为例:
public class ShuJu{
public static void main(String[]args){
int w=10,x=9;
if((w=0)==0||(x=0)==0){
System.out.println(x);
}
int ww=10,xx=9
if((ww=0)==0)|((xx=0)==0){
System.out.println(xx);
}
}
}
输出结果x=10,因为右边被短路了,xx=0,因为位运算不存在短路。