boolean类型的按位或||和|的区别

boolean类型既可以使用&&和||做逻辑运算,也可以使用&和|做逻辑运算,但前者是经过优化的(执行短路运算),后者未优化。

以下代码验证:

逻辑或||

public class Main3 {
    public static int p=0;
    public static boolean m1(){
        p=1;
        return true;
    }
    public static boolean m2(){
        p=2;
        return true;
    }
    public static void main(String[] args){
        System.out.println(m1() || m2());
        System.out.println(p);
    }
}

//输出
true
1

逻辑或|

public class Main3 {
    public static int p=0;
    public static boolean m1(){
        p=1;
        return true;
    }
    public static boolean m2(){
        p=2;
        return true;
    }
    public static void main(String[] args){
        System.out.println(m1() | m2());
        System.out.println(p);
    }
}

//输出
true
2

 可以看出使用逻辑或|做逻辑运算时,m1() | m2()中,当m1()为true时,依然会执行后面的m2()函数。这是与逻辑或||的区别。

posted @ 2017-08-16 19:46  且听风吟-wuchao  阅读(1454)  评论(0编辑  收藏  举报