一、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

Java运算符公式 java ~运算符_运算符

“按位”运算符“|”,规则:全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); 
		}
	}
}

Java运算符公式 java ~运算符_运算符_02

位运算按位或:

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); 
		}
	}
}

Java运算符公式 java ~运算符_Java运算符公式_03

注意比较z和zz的输出结果,会发现“逻辑或”只执行了前半条语句,也就是后半条语句被“短路”了,而“按位或”同时执行了“|”两边的语句。

以上,就是Java中逻辑运算符与位运算符概念的具体阐述与比较。