Java中&叫做按位与,&&叫做短路与
-
1
& 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,而短路与(&&)的两侧要求必须是布尔表达式。
&为真的条件是两侧表达式都为真,但是即使我们判断出左侧表达式的值为false,程序也还是要继续执行去判断右侧的表达式值的真假
&&若左侧表达式的值为false时,程序则不会继续判断右侧表达式的真假了
例子:
int ceshi =10;
int ceshi1=1;
int ceshi2=1;
if(ceshi==11 & ++ceshi1>0) {
/*
因为&不会短路,所以在判断第一个是false时还会判断第二个表达式,
所以这里的ceshi1会变成2*/
}else {
System.out.println(ceshi1);
}
if(ceshi==11 && ++ceshi1>0) {
/*
因为&&会短路,所以在判断第一个是false时不会再判断第二个表达式,
所以这里的ceshi1不变*/
}else {
System.out.println(ceshi2);
}