逻辑运算符:

 一.|与||

      1.|:      

Integer a=50;
        Integer b=40;
    
        if(a>b|b<a--){
            System.out.println("|:"+a);
        }

输出结果:  |:49

      2.||:

Integer a=50;
        Integer b=40;

        
        if(a>b||b<a--){
            System.out.println("||:"+a);
        } 
 输出结果50

      从上面的代码比较可以发现,当使用|进行逻辑运算的时候,无论运算符左边的判断a>b是否为true都会继续判断运算符右边b<a,而当使用||时只要运算符左边的||a>b为true,则不会继续判断右边的b<a;

   结论(将|作为逻辑运算符时):

    1.|没有短路,无论左边的判断结果是否为true,左右两边的判断都会执行完

    2.||有短路,当左边的判断为true时,即发生短路右边的判断不会继续执行

 

 

二.&与&&

  1.&:

    

Integer a=50;
        Integer b=40;  

                 if(a<b&b<a--){
            System.out.println("&&:true "+a);
        }
            System.out.println("&&:false "+a);
    输出结果:&:false 49

  2.&&:

  

Integer a=50;
        Integer b=40;
        
                if(a<b&&b<a--){
            System.out.println("&&:true- "+a);
        }
        System.out.println("&&:false- "+a);

输出结果:&&:false 50

   比较发现,当使用&进行逻辑运算的时候,无论左边的判断a<b是否为flase,都会继续判断右边的b<a,而使用&&时,当左边的判断a<b为false,则不会继续判断右边的b<a

  结论:

    1.&没有短路,无论左边的判断结果是否为flase,左右两边的判断都会执行完

    2.&&有短路,当左边的判断为flase时,即发生短路右边的判断不会继续执行