短路与&&、短路和逻辑与&、逻辑或的区别

代码演示(以 & 和 && 为例):

int x = 10;
int y = 11;

System.out.println(x > y & x > y++); //false
System.out.println(y); //12

y == 12 说明y++执行了



int m = 10;
int n = 11;

System.out.println(m > n && m > n++); //false
System.out.println(n); //11

 n == 12 说明y++未执行
 
复制代码

总结:

首先,这两个运算符的运算结果完全相同

使用逻辑与&时,虽然左边表达式结果为false了,但是右边的表达式还会执行。

使用短路与&&时,左边表达式结果为false后,右边表达式结果就不会执行了。

使用短路或||时,左边表达式结果为true,右边表达式就不会执行了

短路与、短路或的效率高些
复制代码