博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java布尔值进行and和or逻辑运算原理
阅读量:4645 次
发布时间:2019-06-09

本文共 1346 字,大约阅读时间需要 4 分钟。

先看看如下代码:

public class Test {    public static void test() {        boolean a = true;        boolean b = false;        if (a | b) {            System.out.println("|");        }        if (a & b) {            System.out.println("&");        }    }    public static void main(String[] args){        test();    }}

输出: |

| 和 &运算符是 or和and逻辑运算

1 | 0 == 1

1 & 0 == 0

我们来看一下test方法的字节码

     0: iconst_1         1: istore_0         2: iconst_0         3: istore_1         4: iload_0         5: iload_1         6: ior         7: ifeq          18        10: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;        13: ldc           #3                  // String |        15: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V        18: iload_0        19: iload_1        20: iand        21: ifeq          32        24: getstatic     #2                  // Field java/lang/System.out:Ljava/io/PrintStream;        27: ldc           #5                  // String &        29: invokevirtual #4                  // Method java/io/PrintStream.println:(Ljava/lang/String;)V        32: return

我们注意0-3的字节码

0:将常量1入栈

1:将1赋值给第一个变量(a)

2:将常量0入栈

3:将0赋值给第二个变量(b)

所以布尔值的逻辑运算就是整型01的逻辑运算

7:ifeq 18 表示

if()里面判断的是逻辑运算的结果是否等于0,如果等于0,则跳过括号内的代码进行下面的代码.

转载于:https://www.cnblogs.com/vinozly/p/5399351.html

你可能感兴趣的文章
angular.isUndefined()
查看>>
第一次软件工程作业(改进版)
查看>>
网络流24题-飞行员配对方案问题
查看>>
Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
查看>>
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>
使用java中replaceAll方法替换字符串中的反斜杠
查看>>
Some configure
查看>>
流量调整和限流技术 【转载】
查看>>
正由另一进程使用,因此该进程无法访问此文件。
查看>>
1 线性空间
查看>>
VS不显示最近打开的项目
查看>>
MyEclipse安装Freemarker插件
查看>>
计算多项式的值
查看>>
DP(动态规划)
查看>>
chkconfig
查看>>