java逻辑运算符& && | ||的异同

&& || & |都属于逻辑运算符,不过更严格来讲,&和|属于位逻辑运算符,因为&和|可以还参与位运算。

&与 &&的区分
& 通常叫做:按位与
而&&通常叫:逻辑与
首先讲他们的相同点 :都是一假全为假
什么是一假全为假呢?举个例子

c=a&b;
d=a&&b;

上述代码中只有a b同时为true ,c、d才会为true。只要c、d有一个为假,或者c、d都为假,则结果为假。

而&与&&的不同点:
A.&不短路,而&&短路。
什么是短路呢?在java里指的是被阻碍,不能进行下一步。
再次举个例子

c=a&b;
d=a&&b;

求c的运算中,不管什么情况,&两边都要进行运算。而求d的运算中,只要a这边为false,则不用在进行&&右边的b的运算。

B.&可以参与位运算,而&&不可以
举个&参与位运算的例子吧

int a=4;
int b=3;
int c=a&b;
System.out.println(c);

c=a&b的运算步骤:
1.先把a的数值化为2进制,即0100
2.把b的数值化为2进制,即0011
3. 在这里插入图片描述
如图列竖式,然后每一列进行&运算,如果那一列全为1(true)即该列的结果为1,否则某一列只要含有0,则该列的结果为0,将得到的结果0000换成十进制,即4&3的结果,为0,所以c=0;

同理|和||的区别(不过|和||是一真全为真,|进行位运算时只要当列含1则该列的结果为1)

对了,在java中 && ||两边只能为boolean类型的值,而&|两边可以同时为boolean类型的值,也可以两边同时为Int类型的值(此时进行位运算)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值