JAVA逻辑运算符示例详解:与、或、非、异或

  • Post author:
  • Post category:java

https://blog.csdn.net/m0_37220730/article/details/104242582

JAVA逻辑运算符示例详解:与、或、非、异或

对比表

与(仅左右语句都为真时为真)包括:逻辑与& 和 短路与&&
或(左右语句有一则或超过一则为真时为真)包括:逻辑或| 和 短路或||
非(取反,假时为真,真时为假)包括:逻辑非!
异或(左右相异时为真,左右相同时为假)包括:逻辑异或^
1234
a b a&b a&&b a|b a||b !a a^b
true true true true true true false false
true false false false true true false true
false true false false true true true true
false false false false false false true false

逻辑与

class LogicAnd{
    public static void main(String[] args){
        
        //区分& and &&
        //当符号左右都是boolean型变量时,&为逻辑与(无论何种情况,左右语句都执行)
        boolean b1 = false;
        int num1 = 10;
        if(b1&(num1++ >0)){
            System.out.println("逻辑与成立");
        }else{
            System.out.println("逻辑与不成立");
        }
        System.out.println("num1=" + num1);
        // 此时输出结果为
        // <<<逻辑与不成立
        // <<<num1=11
    }
}
123456789101112131415161718

短路与

class ShortAnd{
    public static void main(String[] args){
        
        //区分& and &&
        //&&为短路与(左语句为真则执行右语句,左语句为假则不执行右语句(因为左为假,与运算已不成立,此时短路与不执行右侧语句))
        boolean b2 = false;
        int num2 = 10;
        if(b2&&(num2++ >0)){
            System.out.println("短路与成立");
        }else{
            System.out.println("短路与不成立");
        }
        System.out.println("num2=" + num2);
        // 此时输出结果为
        // <<<逻辑与不成立
        // <<<num2=10
    }
}
123456789101112131415161718

逻辑或

class LogicOr{
    public static void main(String[] args){
        
        //区分| and ||
        //当符号左右都是boolean型变量时,|为逻辑或(无论何种情况,左右语句都执行)
        boolean b1 = true;
        int num1 = 10;
        if(b1|(num1++ >0)){
            System.out.println("逻辑或成立");
        }else{
            System.out.println("逻辑或不成立");
        }
        System.out.println("num1=" + num1);
        // 此时输出结果为
        // <<<逻辑或成立
        // <<<num1=11
    }
}
123456789101112131415161718

短路或

class ShortOr{
    public static void main(String[] args){
        
        // 区分| and |
        // ||为短路或(左语句为假则执行右语句,左语句为真则不执行右语句(因为左为真,或运算已成立,此时短路与不执行右侧语句))
        boolean b2 = true;
        int num2 = 10;
        if(b2&&(num2++ >0)){
            System.out.println("短路或成立");
        }else{
            System.out.println("短路或不成立");
        }
        System.out.println("num2=" + num2);
        // 此时输出结果为
        // <<<逻辑或成立
        // <<<num2=10
    }
}
123456789101112131415161718

逻辑非

class LogicNot{
    public static void main(String[] args){
        
        // 逻辑非 !
        boolean b = true;       
        if(!b){
            System.out.println("非b为真");
        }else{
            System.out.println("非b为假");
        }       
        // 此时输出结果为
        // <<<非b为假      
    }
}
1234567891011121314

异或

逻辑异或

class LogicXor{
    public static void main(String[] args){
        
        // 逻辑异或 ^
        boolean a = true;
        booleam b = false;
        if(a^b){
            System.out.println("a^b为真");
        }else{
            System.out.println("a^b为假");
        }       
        // 此时输出结果为
        // <<<a^b为真 
    }
}
123456789101112131415