&&和&的联系与区别
联系:
都是逻辑与运算符,双目运算符,比如 a = 1; if(a == 0 && ++b > 0) 只有两边都为true时,整个式子为true。
区别:
1、&&具有短路的功能,比如 a = 1; if(a == 0 && ++b > 0) ,a==0为false,++b不会进行判断,也就是b的值不会增加。
&没有短路功能,运算符两边都会运算,a = 1; if( a==0 & ++b > 0),即使a==0是false,b的值也会加1;
2、&还可作为位运算,当&两边的表达式的值不是boolean类型值时,表示位运算。将十进制转换为二进制进行按位与操作。我们通 常使用0x0f来与一个整数进行&运算,来获取该整数的最低4个bit位,例如,0x31 & 0x0f的结果为0x01。
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 10;
int c = 10;
if (a == 0 && ++b > 0) {//&&有短路功能,b值不变
} else {
System.out.println("--b-->" + b);
}
if (a == 0 & ++c > 0) {//&两边都会运算,c值加1
} else {
System.out.println("--c-->" + c);
}
}
}
运算结果如下:
--b-->10
--c-->11