&& 和 & 的区别 ||和|区别
程序员文章站
2024-03-22 10:37:28
...
&& 和 & 的区别:
&&
和&
结果一样,&&
有短路效果,左边为false,右边不执行;&
左边无论是什么,右边都会执行。
||
和|
区别:
||
和|
结果一样,||
有短路效果,左边为true,右边不执行;|
左边无论是什么,右边都会执行。
但要特别注意的是 短路与只有是左边为false时,右边才不执行,本题不同的是左边现在是true,所以右边还要看。同样的短路或,只有当左边是true时,右边才不执行中间虽然为短路或,因为左边是false,所以右边还要考虑,具体细节如下
public class Test{
public static void main (String [] args) {
boolean x = true;
boolean y = false;
short z = 42;
//如果if((z++==42)&&(y==true))条件成立,执行z++,不成立,就不执行z++
//左边的条件:z==42,z++ z==42成立,z++变成43
//尤其这一步 短路与只有是左边为false时,右边才不执行
//中间虽然是短路与,因为左边现在是true,右边还要看
//右边 y==true 不成立
//true && false 结果为false
if((z++==42)&&(y==true)) z++;
//左边为x=false,赋值 结果就为false
//同样的短路或,只有当左边是true时,右边才不执行
//中间虽然为短路或,因为左边是false,右边继续看
//++z,z==45 ++z变成44,z==45是否成立,不成立
//false || false 结果为false
if((x=false) || (++z==45)) z++;
System.out.println("z="+z);//44
}
}