Java中的&与&&
1、&& 短路与,先计算左边的表达式,如果左边为false,则直接返回false,不会计算右边的表达式。只有左边表达式为true时,才会计算右边的表达式。
& 不短路与,永远都会计算左右两个表达式
public static void main(String[] args){
int a=2;
int b=6;
if(a>3 && b++>6) {
System.out.println("a:"+a+"b:"+b); //不执行
}
else {
System.out.println(b); //6
}
}
由于a>3 && b++>6中的第一个表达式a>3我false,则不会计算右边的b++,所以b的值不会改变
public static void main(String[] args){
int a=2;
int b=6;
if(a>3 & b++>6) {
System.out.println("a:"+a+"b:"+b);
}
else {
System.out.println(b); //7
}
}
&两边都会计算,即使第一个a>3不满足,任然会计算后面的b++,因此结果为7