一、区别
短路与&& 和短路或 || 的作用相同,但有短路效果
逻辑与 & 和逻辑或 | 没有短路效果
1、逻辑与 & 和逻辑或 | 没有短路效果
int i=10;
int j=20;
System.out.println((i++>100)&(j++)>100); // false
System.out.println("i:"+i); //11
System.out.println("j:"+j); //21
编译运行:
可以看出 i 和 j 都加一,都执行了。证明逻辑与没有短路效果
2、 短路与&& 和短路或 || 的作用相同,但有短路效果
并且 短路与:如果前面是false ,后面无论是false还是true都是 false ,后面就不执行了
int i=10;
int j=20;
System.out.println((i++>100)&&(j++)>100); //false
System.out.println("i:"+i); //12
System.out.println("j:"+j); //20
编译执行结果:
可以看出 i加一 ,j 没变,j 没有执行。证明短路与&&有短路效果
3、逻辑或 |,只要有一个true,就全是true,全都执行
int i=10;
int j=20;
System.out.println((i++<100)|(j++)<100);//true
System.out.println("i:"+i); //11
System.out.println("j:"+j); //21
编译执行结果:
可以看出 i 和 j 都加一,都执行了。证明逻辑或没有短路效果
4、短路或:如果前面是true 后面无论是false还是true都是 true ,后面就不执行了
如果前面的不是true,按正常或看,只要有一个true,就是true,都执行
int i=10;
int j=20;
System.out.println((i++>100)||(j++)<100);//true
System.out.println("i:"+i); //11
System.out.println("j:"+j); //21
编译运行结果:
即 前面的(i++)>100不是true,则就按正常或看,后面的为true,即(j++)<100,就是true,就都执行
都加一