JAVA中的|、||、&和&&

作者: KaelQ | 来源:发表于2017-03-11 21:53 被阅读57次

1.前言

  • 最近遇到了使用|||&&&的场景,有点模糊不清,现在这里书写下来记录。

2.先上代码

public class andOrTest {
    static int a = 0;
    static int b = 0;

    public static void main(String arg[]) {
        //在这里进行配置
        doubleOr();

    }

    private static void printlnAndZero() {
        System.out.println("a:" + a + "," + "b:" + b);
        a = 0;
        b = 0;
    }

    private static void justPrintLn() {
        System.out.println("a:" + a + "," + "b:" + b);
    }

    private static void zero() {
        a = 0;
        b = 0;
    }

    private static void justAnd() {
        // true false
        if (((a = 1) > 0) & ((b = -1) > 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // true true
        if (((a = 1) > 0) & ((b = -1) < 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // false false
        if (((a = 1) < 0) & ((b = -1) > 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // false true
        if (((a = 1) < 0) & ((b = -1) < 0)) {
            justPrintLn();
        }
        printlnAndZero();
        
    }

    private static void justOr() {
        // true false
        if (((a = 1) > 0) | ((b = -1) > 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // true true
        if (((a = 1) > 0) | ((b = -1) < 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // false false
        if (((a = 1) < 0) | ((b = -1) > 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // false true
        if (((a = 1) < 0) | ((b = -1) < 0)) {
            justPrintLn();
        }
        printlnAndZero();
        zero();
    }

    private static void doubleAnd() {
        // true false
        if (((a = 1) > 0) && ((b = -1) > 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // true true
        if (((a = 1) > 0) && ((b = -1) < 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // false false
        if (((a = 1) < 0) && ((b = -1) > 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // false true
        if (((a = 1) < 0) && ((b = -1) < 0)) {
            justPrintLn();
        }
        printlnAndZero();
        zero();
    }

    private static void doubleOr() {
        // true false
        if (((a = 1) > 0) || ((b = -1) > 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // true true
        if (((a = 1) > 0) || ((b = -1) < 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // false false
        if (((a = 1) < 0) || ((b = -1) > 0)) {
            justPrintLn();
        }
        printlnAndZero();
        // false true
        if (((a = 1) < 0) || ((b = -1) < 0)) {
            justPrintLn();
        }
        printlnAndZero();
        zero();
    }
}

3.输出结果

3.1 &

justAnd()
a:1,b:-1
a:1,b:-1
a:1,b:-1//这次是全为true的输出
a:1,b:-1
a:1,b:-1

3.2 |

jsutOr()
a:1,b:-1
a:1,b:-1//true false时的输出
a:1,b:-1
a:1,b:-1//true true时的输出
a:1,b:-1
a:1,b:-1
a:1,b:-1//false true时的输出

3.3 &&

doubleAnd()
a:1,b:-1
a:1,b:-1
a:1,b:-1//全为true的输出
a:1,b:0//当前面的判断为false时就不执行后面的操作
a:1,b:0//当前面的判断为false时就不执行后面的操作

3.4 ||

doubleOr()
a:1,b:0//当前面的判断为true时就不执行后面的操作
a:1,b:0//true false 的输出
a:1,b:0//当前面的判断为true时就不执行后面的操作
a:1,b:0//true true 的输出
a:1,b:-1
a:1,b:-1
a:1,b:-1//false true的输出

4.总结

  • & | 是逻辑与 、逻辑或操作,即先确定左右的布尔值,然后再做判断。
  • && ||是短路与、短路或操作,即先确定左边的布尔值,如果可以通过,就不确定右边的布尔值。

相关文章

网友评论

    本文标题:JAVA中的|、||、&和&&

    本文链接:https://www.haomeiwen.com/subject/cnlpgttx.html