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

2019-07-13 23:12发布

定义: || :或,运算符两侧有一侧为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+" ,"+"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 + " ," + "b的值为:" + b); } 输出的结果为: a的值为:5,b的值为:8 不短路或是无论如何都会把表达式两侧的条件都执行,再返回结果,但是效率肯定没有‘或’高,而&和&&的区别应该同理,目前还没有用到过不短路运算符,以后可能会用到!