java对布尔类型进行位运算

java对布尔类型进行位运算

java中允许对布尔类型进行位运算

boolean flag1 = false;
boolean flag2 = true;
& 按位与运算
//&
		Systeam.out.println(flag1 & flag2)//输出false

对两个布尔类型变量使用**&按位运算符,当二者皆为true就会输出true**,其他任何情况则输出false

| 按位或运算
//|
        System.out.println(flag1 | flag2);//输出ture

对两个布尔类型变量使用**|运算符,当二者其一为true就会输出true**,即只有当二者皆为false时才会输出false

^ 按位异或运算
//^
		System.out.println(flag1 ^ flag2);//输出ture

对两个布尔类型变量使用**^运算符,当二者值一致时会输出false**,值不一致时输出true

按位与、或与逻辑与、或的区别

由以上,似乎能得出:&和&&功能相同、|与||功能相同?

但&与&&、|与||是有不同的:

逻辑与、或(&&、||)是有短路操作 的,而按位与、或(&、|)是没有短路操作

何为短路操作?

短路操作

短路(short-circuiting)操作:拿到符合预期的结果就会停下来,不一定会处理完所有数据。

//当程序执行该段代码时:
public class test {
    public static boolean judge1(){
        System.out.println("judge1执行");
        return false;
    }
    public static boolean judge2(){
        System.out.println("judge2执行");
        return true;
    }
    public static void main(String[] args){
        if(judge1()&&judge2()){
            //
        }
    }

运行结果为:

judge1执行

当把if中的**&&改为&**时,运行结果为:

judge1执行
judge2执行

可见有短路操作时,执行完judge1后,该程序已经可以得出if中逻辑判断为false,该次逻辑判断便会停止,不会执行judge2

当无短路操作时,该次逻辑判断便仍然会持续下去,进而执行judge2

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值