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,則跳過括號內的代碼進行下面的代碼.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM