Java中 | 和 || ,& 和 &&的区别

定义:

|| :或,运算符两侧有一侧为true,则返回true,全是false,则返回false。

|  :不短路或,作用与  '||' ,相同,但不短路。

&& :与,运算符两侧均为true,则返回true,有一侧为false,则返回false。

& :不短路与,作用与  '&&' ,相同,但不短路。

短路到底是什么意思呢?物理学上给出了解释:

        短路是指电路或电路中的一部分被短接。如负载与电源两端被导线连接在一起,就称为短路,短路时电源提供的电流将比通路时提供的电流大得多,一般情况下不允许短路,如果短路,严重时会烧坏电源或设备。

可以看出,短路的结果是使设备终止运行,那么Java中是代表什么?用下面的例子可以更好地理解两者的区别:

	int a = 5;
	int b = 7;
	if(a > 4 || b++ > 10){
		System.out.println("a的值为:"+a+"\t,"+"b的值为:"+b);
	}

if中用了'或',运算符,即表达式有一侧为true则返回true,此时控制台输出为:

a的值为:5,b的值为:7

可以看出,if中判断了左侧满足条件后就不继续运行了,使b++并没有被执行,所以b的值还是7,我们更换不短路或测试一下:

	int a = 5;
	int b = 7;
	if (a > 4 | b++ > 10) {
		System.out.println("a的值为:" + a + "\t," + "b的值为:" + b);
	}

输出的结果为:

a的值为:5,b的值为:8

不短路或是无论如何都会把表达式两侧的条件都执行,再返回结果,但是效率肯定没有‘或’高,而&和&&的区别应该同理,目前还没有用到过不短路运算符,以后可能会用到!

猜你喜欢

转载自blog.csdn.net/New_Yao/article/details/81535962