zoukankan      html  css  js  c++  java
  • java布尔值进行and和or逻辑运算原理

    先看看如下代码:

    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,则跳过括号内的代码进行下面的代码.

  • 相关阅读:
    大教堂和市集
    VB相关资源
    什么样的团队才是优秀的团队
    走过2007
    一种简单实用的错误码构建方法
    熊的困惑
    调测中的反思
    PowerPC852T的SMC初始化—串口通信
    Silverlight Listbox 取消全选的方法
    电脑读不出U盘,有一个黄色感叹号的解决方法
  • 原文地址:https://www.cnblogs.com/vinozly/p/5399351.html
Copyright © 2011-2022 走看看