Java中&和&&都可以表示逻辑与运算,但是它们之间也有区别。
1) 都可以表示逻辑与运算:&&表示短路与,例如 a&&b,a表达式为false,则不进行b表达式的判断;而 a&b 表达式中,不论a表达式是否false都需要进行b表达式的判断。我们通过以下的例子来说明:
public static boolean checkNumber(int i){
if (i<5) {
System.out.println("小于5");
return true;
}
System.out.println("判断"+i);
return false;
}
public static void main(String[] args) {
int i=6;
if(checkNumber(i) & checkNumber(i)){
System.out.println("逻辑与&");//逻辑与,都要判断
}
i=7;
if (checkNumber(i) && checkNumber(i)){
System.out.println("逻辑与&&"); //逻辑与
}
System.out.println(i);
}
输出结果:
判断6
判断6
判断7
7
判断6
判断7
7
从上面的输出结果中我们可以看出
- checkNumber(i) & checkNumber(i) 中第一个表达式返回false,第二个表达式仍旧执行。
- checkNumber(i) && checkNumber(i) 中第一个表达式返回false,第二个表达式不再执行。
2) &可用于位运算,当左右两边的条件不是布尔型,而是数字时,它会进行位运算。
int i = 123 & 321;
System.out.println(i);