逻辑运算符:
一.|与||
1.|:
Integer a=50;
Integer b=40;
if(a>b|b<a--){
System.out.println("|:"+a);
}
输出结果: |:49
2.||:
Integer a=50;
Integer b=40;
if(a>b||b<a--){
System.out.println("||:"+a);
}
输出结果50
从上面的代码比较可以发现,当使用|进行逻辑运算的时候,无论运算符左边的判断a>b是否为true都会继续判断运算符右边b<a,而当使用||时只要运算符左边的||a>b为true,则不会继续判断右边的b<a;
结论(将|作为逻辑运算符时):
1.|没有短路,无论左边的判断结果是否为true,左右两边的判断都会执行完
2.||有短路,当左边的判断为true时,即发生短路右边的判断不会继续执行
二.&与&&
1.&:
Integer a=50;
Integer b=40;
if(a<b&b<a--){
System.out.println("&&:true "+a);
}
System.out.println("&&:false "+a);
输出结果:&:false 49
2.&&:
Integer a=50;
Integer b=40;
if(a<b&&b<a--){
System.out.println("&&:true- "+a);
}
System.out.println("&&:false- "+a);
输出结果:&&:false 50
比较发现,当使用&进行逻辑运算的时候,无论左边的判断a<b是否为flase,都会继续判断右边的b<a,而使用&&时,当左边的判断a<b为false,则不会继续判断右边的b<a
结论:
1.&没有短路,无论左边的判断结果是否为flase,左右两边的判断都会执行完
2.&&有短路,当左边的判断为flase时,即发生短路右边的判断不会继续执行