java &和&& |与|| 的区别

&和&&   |和||

区别:(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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值