Java中的&(不短路与)

      开始学Java,发现了点新东西。。。

      Java中的与逻辑运算符是分类别的,有  短路与(&&) 不短路与(&) 之分, 先说说 短路与 ,我们知道与运算的逻辑规则是与运算的两位操作数必须都是true的情况下才返回true——即: x && y 的 值当且仅当a和b都为true时才返回true。

      那么当x为false时,无论y是true还是false整个与运算表达式(x && y)都返回false。那么y的值就没有计算的必要了。这就是短路与。看下面这个例子:


     2<1返回false,所以f++<3就没有执行,下面的结果也符合情况f为0.整个表达式a的值也为false。那个Dead code也显示了(f++<3)那段代码是没有意义的。这就是短路与。


那么不短路(&)与就好理解了,那就是无论前一个操作数x是true还是false,表达式都会计算y的值然后的出总表达式的结果。

看下图:


    (2<1)的值是false,但f的结果变成1了,所以(f++<3)还是执行了的。这就是不短路与。然后重点来了,就是位运算与怎么处理呢???没错,这就是Java中 & 的另一个功能, 运算符 & 除了能表示逻辑与中的不短路与, 它还能表示位运算与,至于什么是位运算,就是把两个数按二进制表示对应的每一位都逻辑与(1表示true,0表示false),即1和1得1,1和0得0,0和0得0. 如下图:


  因为3的二进制表示为11,2的二进制表示为10.所以按为与后就得10,即2.故结果为2.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值