&与&&的区别:
:最终结果一样。
&&具有短路效果。左边是false,右边不执行。
&是无论左边是false还是true,右边都会执行。
案列:
public class Demo {
public static void main(String[] args) {
int a=0;
boolean flag=a>=0|a++>0; //无论a>0是什么结果,a++>0都会执行
System.out.println(flag);//true
System.out.println(a);//1
System.out.println("-----------------");
int b=0;
//&&具有断路效果
boolean flag2=b>0||b++>0;//如果b>0为false,那么b++>0就会执行了
System.out.println(flag2);//false
System.out.println(b);//1
System.out.println("-----------------");
int c=0;
boolean flag3=c>=0||b++>0;//如果b>0为true,那么b++>0就不会执行了
System.out.println(flag3);//true
System.out.println(c);//0
}
}
结果:
||和|的区别:
- 最终结果一样
- ||具有短路效果.左边是true,右边不执行
|是无论左边是false还是true,右边都会执行
案例:
public class Demo {
public static void main(String[] args) {
int a=0;
boolean flag=a>=0|a++>0; //无论a>0是什么结果,a++>0都会执行
System.out.println(flag);//true
System.out.println(a);//1
System.out.println("-----------------");
int b=0;
//&&具有断路效果
boolean flag2=b>0||b++>0;//如果b>0为false,那么b++>0就会执行
System.out.println(flag2);//false
System.out.println(b);//1
System.out.println("-----------------");
int c=0;
boolean flag3=c>=0||b++>0;//如果b>0为true,那么b++>0就不会执行了
System.out.println(flag3);//true
System.out.println(c);//0
}
}
结果: