一、Java中的运算符
Java中的运算符分为几大类:
算术运算符:+、-、*、/、%、++、- -
赋值运算符:=、+=、-=、*=、/=等等
位运算符:~、&、|、^
逻辑运算符:!、&&、||
关系运算符:>、<、>=、<=、= = 、!=
移位运算符>>、<<、>>>(无符号右移)
对于这些运算符的不同名字与分类其实很好理解,不同种类的运算对象不同罢了。而本篇集中阐述的是Java中的逻辑运算符与位运算符。
二、Java中的逻辑运算符
逻辑运算符,说白了就是对布尔型数据进行运算的。因此满足如下规律:
运算符 | 用法 | 含义 |
&& | 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 |
三、位运算符
所谓位运算符,把人搞的一头雾水,“位”到底是个什么玩意儿呢?“位”既然修饰“运算符”,那么就说明“位运算符”是按位运算的,按“位”运算,前提是有“位”,这个为“位”从哪来呢?这就是位运算符的高级之处了,位运算是将数据先转化为二进制数补码形式,再逐位(bit)按规则计算。
也i运算符的符号及规则:
“按位与”运算符“&”,规则:全1则1,否则为0
“按位或”运算符“|”,规则:全0则0,否则为1。
“按位非”运算符“~”,规则:遇1则0,遇0则1。
“按位异或”运算符“^”,规则:相同为0,不同为1。
ps:按位异或很奇妙,使用两次则还原:
3 ^ 5 = 6;
6 ^ 5 = 3;
四、位运算符与逻辑运算符的区别
1.逻辑运算符只能针对boolean类型进行逻辑运算,而位运算还可以对数值进行逻辑运算。
2.逻辑运算符有短路情况,即前面的表达式可以得到最终结果时,后面的表达式将不被执行。
代码示例及运行结果:
逻辑或:
public class Example9{
public static void main(String [] arg){
int y = 10;
int z = 10;
if((y=0)==0 || (z=0)==0){ //短路
System.out.println(z);
}
}
}
位运算按位或:
public class Example9{
public static void main(String [] arg){
int yy = 10;
int zz = 10;
if((yy=0)==0 | (zz=0)==0){
System.out.println(z);
}
}
}
注意比较z和zz的输出结果,会发现“逻辑或”只执行了前半条语句,也就是后半条语句被“短路”了,而“按位或”同时执行了“|”两边的语句。
以上,就是Java中逻辑运算符与位运算符概念的具体阐述与比较。