1、逻辑运算符
运算符
用法
含义
&&
op1&&op2
逻辑与
||
op1||op2
逻辑或
!
!op
逻辑非
op1
Op2
op1&&op2
op1||op2
!op1
true
True
true
true
false
True
False
false
true
false
False
True
false
true
true
False
False
false
false
true
2、运算法则:
只能对Boolean型数据进行运算 例如:
int x=4; if(!x%2==0)运行的结果:
3、特性:
逻辑运算会短路
例如
int a=10,b=20; if((a=0)==0||(b=0)==0) { System.out.println(b); }运行的结果:
1、位运算符
a类
“按位与”运算符“&”,规则:全1则1,否则为0
“按位或”运算符“|”,规则:全0则0,否则为1。
“按位非”运算符“~”,规则:遇1则0,遇0则1。
“按位异或”运算符“^”,规则:相同为0,不同为1。
b类
>> 右移运算符:将二进制数据进行右移运算,左移之后的空位使用0来填充,例如 int 类型3和-3右移2位。
<< 左移运算符:将二进制数据进行左移运算,右移之后空出来的位置以符号位填充。如果是正数使用“0”填充,如果是负数使 用“1”填充,例如 int 类型3左移2位。
>>> 无符号右移运算符:无论正负,空出来的位以“0”填充,例如int类型3和-2无符号右移2位。
2、运算法则
a. |,&,可以对数值和布尔型进行运算
b. <<,>>,>>>(无符号右移)型
例如:
>> 右移运算符:将二进制数据进行右移运算,左移之后的空位使用0来填充,例如 int 类型3和-3右移2位,如下图:
>>> 无符号右移运算符:无论正负,空出来的位以“0”填充,例如int类型3和-2无符号右移2位,如下图:
3、特性
a.位运算不会短路
int a=10,b=20; if((a=0)==0|(b=0)==0) { System.out.println(b); }运行结果:
b. 按异或两次,回到原值
int a=3,b=5; a=a^b; b=a^b; a=a^b;运行的结果:
若有缺陷或者错误,请不吝赐教。