&和&& |和||
区别:(1)& 有按位与和逻辑与的功能,&& 只有逻辑与功能
逻辑与:
左右两边只要有一边为false 结果就是false
按位与:
运算符两边以二进制的形式进行与操作
(2)&&比&要稍微快一些
&无论左边是true或false 右边都要继续运算
&& 当左边是false是,右边不运算
|和||的区别于&和&&的区别相对应,不同的是||运算符只要左边的结果为true,右边就不在运算
例题
class Test {
public static void main(String[] args) {
int a = 3;
int b = 4;
if ((a>b&(a++)>b&&(--b)<a)|(b++)<=(a--)) {
System.out.println("判断结果为true, a=" + a + ",b=" + b);
} else {
System.out.println("判断结果为false, a=" + a + ",b=" + b);
}
}
}
A.判断结果为true, a=3,b=5 B.判断结果为true, a=3,b=4
C.判断结果为false, a=3,b=5 D.判断结果为false, a=4,b=4
答案 :A
分析:
(a>b&(a++)>b&&(--b)<a)|(b++)<=(a--)
先进行a>b的运算,结果为false, 然后计算&的右边(a++)>b,结果为false,a=4 所以&运算的结果为false
接下来是&&运算,&&运算只要左边是false就不在进行右边的运算
然后进行|右边的运算,(b++)<=(a--),结果为true,b=5,a==3