Java中逻辑与,逻辑或,按位与,按位或的区分

Java中逻辑与,逻辑或,按位与,按位或的区分 
Java中逻辑与,逻辑或,按位与,按位或的区分 

一直以来,对这样的概念很是模糊,今天总结了一下 

先说说逻辑与(&&),逻辑或(||) 
他们是短路形式的,举例说明 
int i = 0; 
   System.out.println ( i++ == 1 && i++ == 2);//打印false 
   System.out.println (i);//打印1 
//这里先判断i++是否等于1,因为是右自增,所以这里i++ == 1是错误的,短路就是说不用执行后面的i++ == 2了, 
  直接返回一个false,所以这就是最后结果为什么打印1的原因了 
i = 0;//这里重新赋值,为了下面的例子明了 
   System.out.println ( ++i == 1 && i++ == 2);//打印false 
   System.out.println (i);//打印2 
//而这里刚好相反,++i是等于1的,所以就执行了后面的i++ == 2,最终的i的值也就打印2了 
逻辑与是当两边的运算都为true时,才返回true,否则返回false,如果左边返回false,就直接返回false,不再继续执行右边的代码了 
逻辑或是只要有左边的时是true时,就返回true,不再执行右边的代码,但如果左边的值为false,则返回右边运算的结果 

按位与& 按位或| 

它们和逻辑与,逻辑或是一样的,区别就是非短路运算,即&运算符,即使左边是false,也要执行右边代码;|即使左边是true,也要执行右边代码 
还有一点需要指出的区别就是 
逻辑与,逻辑或在Java中运算符必须是boolean类型的,而按位与,按位或可以是int类型的, 
下面我举例说明他们是如何运行的 

   System.out.println( 5&3);//(代码1) 打印结果1 
   System.out.println( 5|3);//(代码2) 打印结果7 
   System.out.println( 4&2);//(代码3) 打印结果0 
   System.out.println( 4|2);//(代码4) 打印结果6 

二进制码如下: 
//5 101      4 100  
//3 011      2 010  
//& 001        000  
//| 110        110   

按位与的运算: 

看注释3对于注释1和2,会发现除了两位都是1的时候,其余情况下&的结果都是0 

按位或的运算: 

两个数中都为0的时候结果为0,否则结果为1 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值