码迷,mamicode.com
首页 > 编程语言 > 详细

java布尔值进行and和or逻辑运算原理

时间:2016-04-16 22:45:10      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

先看看如下代码:

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

java布尔值进行and和or逻辑运算原理

标签:

原文地址:http://www.cnblogs.com/vinozly/p/5399351.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!