Fork me on GitHub

java之逻辑运算符

&-逻辑与    |-逻辑或    !-逻辑非    &&-短路与    ||-短路或    ^-逻辑异或

a b a&b a|b !a a^b a&&b a||b
T T T T N N T T
T N N T N T N T
N T N T T T N T
N N N N T N N N

逻辑运算符需要注意的几点:

  • java中没有连续型布尔表达式,即不可以写成3<x<6,而要写成x>3&x<6;
  • “&”和"&&"的区别:
    &:左边无论真假,右边都进行运算;
    &&:当左边为真时,右边参与运算;当左边为假时,右边不参与运算;
    public class Test{
        public static void main(String[] args) {
            int a = 1;
            int b = 2;
            if (a == b && test()){
                System.out.println("world");
            }
        }
        
        public static boolean test() {
            System.out.println("hello");
            return false;
        }
    }

    由于a==b为假,所以右边不参与计算,最后什么都不会输出。

    public class Test{
        public static void main(String[] args) {
            int a = 1;
            int b = 2;
            if (a < b && test()){
                System.out.println("world");
            }
        }
        
        public static boolean test() {
            System.out.println("hello");
            return false;
        }
    }

    由于a<b为真,此时右边参与运算,但是右边结果为false,所以整个判断表达式为false,即不会运行到if里面,所以会输出只会hello。

    public class Test{
        public static void main(String[] args) {
            int a = 1;
            int b = 2;
            if (a == b && test()){
                System.out.println("world");
            }
        }
        
        public static boolean test() {
            System.out.println("hello");
            return false;
        }
    }

    由于a<b为真,此时右边参与运算,右边结果也为true,所以整个判断表达式为true,会运行到if里面,所以会输出只会hello wrold。

  • “|”和"||"的区别:
    |:左边无论真假,右边都进行运算;
    ||:当左边为真时,右边参与运算;当左边为假时,右边不参与运算;
  • "^"异或直接理解就是相同则返回false,不同就返回true;
posted @ 2019-12-13 17:44  西西嘛呦  阅读(204)  评论(0编辑  收藏  举报