栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java对布尔类型进行位运算

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/821405.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号