美文网首页Java 小细节
Java 长短路逻辑运算

Java 长短路逻辑运算

作者: 谢随安 | 来源:发表于2017-09-28 15:02 被阅读23次
  • 长路与运算 &
  • 短路与运算 &&
  • 长路或运算 |
  • 短路或运算 ||

长路与运算 &

运行如下程序:

public class LogicCalculate {
    public static void main(String[] args) {
        int int1 = 1;
        int int2 = 2;
        int res1 = int1 & int2;
        boolean res2 = int1>0 & int2<3 ;

        System.out.println(res1);
        System.out.println(res2);

    }
}

返回结果为:

0
true

对于长路与运算 &:

  1. 当运算符两边都是整数时,会进行逐位与运算(二进制逻辑运算);当两边是关系运算时,是逻辑运算。
    2.长路与运算会将两边的关系运算结果都计算出来(不明白的话看到下面的短路与运算就知道了)。
短路与运算 &&

简单修改上面的代码运行如下程序:

public class LogicCalculate {
    public static void main(String[] args) {
        int int1 = 1;
        int int2 = 2;
        int res1 = int1 && int2;
        boolean res2 = int1>0 && int2<3 ;

        System.out.println(res1);
        System.out.println(res2);

    }
}

上面的代码会在 int res1 = int1 && int2;处报错,报错信息为‘&&’操作符不能被用于int,int。显然,短路运算符不支持按位逻辑运算

运行如下代码

public class LogicCalculate {
    public static void main(String[] args) {
        int int1 = 1;
        int int2 = 2;
        boolean res2 = int1<0 && int2<3 ;

        System.out.println(res2);

    }
}

运行结果为 false

短路与运算 && 与长路与运算 &的区别在于:

  • 短路运算不支持按位运算。
  • 如果左条件为false, && 运算将不会再继续计算右边关系表达式,这样能提高程序的效率。
长路或运算 |

运行如下代码:

public class LogicCalculate {
    public static void main(String[] args) {
        int int1 = 1;
        int int2 = 2;

        int res1 = int1 | int2;
        boolean res2 = int1>0 | int2<1;



        System.out.println(res1);
        System.out.println(res2);

    }
}

运行结果为:

3
true

对于长路或运算 |:

当运算符两边都是整数时,会进行按位或运算(二进制逻辑运算);当两边是关系运算时,是逻辑运算。
2.长路或运算会将两边的关系运算结果都计算出来,不管左边的关系表达式是不是true。

短路或运算 ||

简单修改上面的代码运行如下程序:

public class LogicCalculate {
    public static void main(String[] args) {
        int int1 = 1;
        int int2 = 2;

        boolean res1 = int1>0 || int2<1;
        System.out.println(res1);

    }
}

运行结果为 true

短路与运算 || 与长路与运算 | 的区别在于:

  • 短路运算不支持按位运算。
  • 如果左条件为True, || 运算将不会再继续计算右边关系表达式,这样能提高程序的效率。

结论:

  • 长路逻辑运算支持按位运算,而短路运算不支持。
  • 短路逻辑运算相较于长路逻辑运算,效率更高,因此进行逻辑运算时应当使用短路逻辑运算符。

相关文章

  • Java中,&&与&,||与|的区别

    [Java中,&&与&,||与|的区别] 在Java的逻辑运算符中,有这么四类:&&(短路与),&,|,||(短路...

  • &&,||

    长路和短路 长路将逻辑运算符两侧运算执行完后执行逻辑运算;短路先执行逻辑运算符左侧部分,符合,就不再执行右侧部分。...

  • 逻辑运算符

    在java的逻辑运算符中,有这么四类:&&(短路与),&(与),|(或),||(短路或)。 &&和&都是表示与,区...

  • Java--逻辑运算符

      逻辑运算的操作数和运算结果都是boolean值。 逻辑运算符   短路与和短路或采用短路的方式。从左到右计算,...

  • Java 长短路逻辑运算

    长路与运算 & 短路与运算 && 长路或运算 | 短路或运算 || 长路与运算 & 运行如下程序: 返回结果为: ...

  • Java中&与&&的区别

    一、定义 Java中&叫做按位与,&&叫做短路与。 二、区别 1、&既是位运算符又是逻辑运算符,&的两侧可以是in...

  • c#短路现象

    //短路现象 逻辑运算符中 && (一假即假) ||(一真即真) //短路现象是一种 优化 int n = 10;...

  • js 中逻辑运算符&&和||,位运算符&和|的总结

    菜鸟学习的过程记录 ...._.... 逻辑运算符&&和|| ----(短路运算) alert(a&&b) : ...

  • go基础(二) for循环

    一.逻辑运算符(唯一) &&,短路与||,短路或!,非逻辑与&&运算优先级高于逻辑或|| 二.for循环嵌套 1....

  • 15_逻辑运算符分析

    关键词:&&、||、! 1. 初探逻辑运算符 输出结果: 2. 逻辑运算符分析——程序中的短路 ||从左向右开始...

网友评论

    本文标题:Java 长短路逻辑运算

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