Java中逻辑运算符(&&,||,!)与位运算符(&,|,~)的区别与联系

一:逻辑运算符(&&,||)两边是以boolean的形式来得到结果(结果也是boolean类型);

;true=ture&&true  最后结果为true(&&两边为ture则结果为true.如果两边
     都不全为ture则结果为false)
      false=true&&false,false=false&&ture,false=false&&false;||则与它刚好相反
     true=true||false,只要结果中有一个为true,则整体结果为true,
     true=false||true,true=true||true,false=false||false;

二:位运算符(&,|)如果左右两边都为boolean类型,则执行方式与(&&,||)``一样; (这里就不再重复了;)

true=ture&true,       false=true&false,      false=false&ture,  
false=false&false;
true=true|false,      true=false|true,       true=true|true,
false=false|false;

三:逻辑运算符中的取反运算符(!);如果为true则结果为false,如果为false则结果为true

false=!true,  true=!false;

四:逻辑运算符与位运算符的区别与注意

位运算符还有一个作用:就是当运算符两边不是boolean类型时,而是数字则结果要进行二进制转换(这个涉及到计算机的二进制问题)

4.1: a&b (都为1时则为1)

1&4 = 0,   

在这里插入图片描述
4.2: a|b (只要有一个为1则为1)

1|2 = 3;

在这里插入图片描述
4.3: a^b (两边相同为0,不相同为1)

1^3 = 2;

在这里插入图片描述
4.4: ~a (为0时则为1,为1时则为0)

~2 = -3;

在这里插入图片描述

五:注意:逻辑运算符会出现"短路"现象(可以通过换成位运算符来解决这个问题)

public class LuoJiDemo02 {
	public static void main(String[] args) {	
   //&&与&,当&&左边为false,则结果为false,右边不进行运算
   int a=3,b=4;
   //&&与&的短路
   //System.out.println((a>b)&((a+=b)>b))//(3>4)&(7>4);左右两边都会执行
   //System.out.println(a);对应上面结果为7
   //System.out.println(b);对应上面结果为4
   System.out.println((a>b)&&((a+=b)>b))/*(3>4)&((a+=b)>b)
   左边的结果为false,则后面的部分不运行了*/
   System.out.println(a);//a的结果还是3
   System.out.println(b);//b的结果还是4
   //||与|的短路
  //System.out.println((b>a)|((a+=b)>b))/*(4>3)|(7>4)左右两边都会执行*/
  //System.out.println(a);对应上面结果为7
  //System.out.println(b);对应上面结果为4
  System.out.println((b>a)||((a+=b)>b))/*(4>3)|((a+=b)>b)),左边结果为
  true,则右边结果不运行*/
  System.out.println(a);//a的结果还是3
  System.out.println(b);//b的结果还是4
  }
  }
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值