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.

阅读更多
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/Jason_crawford/article/details/79946954
文章标签: 运算符
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭