zoukankan      html  css  js  c++  java
  • Java运算符 逻辑运算符 短路运算符

    &      与  

    两个运算数都为真时结果为真,只要有一个运算数为假结果就为假,否则就为真。

    true & true = true  

    true & false = false  

    false & true = false  

    false & false = false

    |      或

    只要有一个运算数为真,结果就为真,否则就为假。

    true | true = true

    true | false = true

    false | true = true
    false | false = false

    !     非

    原来为真,结果位假。原来为假,结果就为真。

    ! true = false

    ! false = true

    ^     异或

    相同位假,不同为真。

    true ^ true = false

    true ^ false = true

    false ^ true = true

    false ^ false = false

    下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假

    操作符描述例子
    && 称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。 (A && B)为假。
    | | 称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。 (A | | B)为真。
    称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。 !(A && B)为真。

    实例:

    public class Test {
      public static void main(String[] args) {
         boolean a = true;
         boolean b = false;
         System.out.println("a && b = " + (a&&b));
         System.out.println("a || b = " + (a||b) );
         System.out.println("!(a && b) = " + !(a && b));
      }
    }

    运行结果:

    a && b = false
    a || b = true
    !(a && b) = true

    注意(1):

      &&:如果前边的表达式的结果为false,则后边的表达式不再运算,整个表达式的结果就确定为false。

    实例:

    public class YuHuo {
        public static void main(String[] args) {
            int a = 5;
            int b = 6;
            if(a++ < 4 && ++b == 7)
                System.out.println(a + " , " + b); // 不输出
            else
                System.out.println(a + " , " + b); // 输出结果为 6 ,6
        }
    }

    上面例子说明: && 前面的算式进行了运算,&& 后面的的运算符没有进行运算。

    注意(2):

      ||   :如果前边的表达式的结果为true,则后边的表达式就不再运算,整个表达式的结果就确定为true

    实例:

    public class Huo {
        public static void main(String[] args) {
            int a = 5;
            int b = 6;
            
            if(++a > 5 || ++b == 7)
                System.out.println(a + " , " + b); // 输出结果:6 , 6
    
        }
    }

    上面例子说明: || 前面的算式进行了运算,而 || 后面的算式没有进行运算。

    注意(3):

      ||  如果在 && 的前边可以把 && 短路掉

    实例:

    public class Huo {
        public static void main(String[] args) {
            int a = 5;
            int b = 6;
            int c = 7;
            
            if(++a > 5 || ++b == 7 && ++c == 8 )
                System.out.println(a + " , " + b + " , " + c); // 输出结果:6 , 6 , 7
        }
    }

    上面例子说明: || 前面算式进行了运算,||  后面的算式没有进行运算 。

     注意(4):

      &&  如果在 || 的前边不能把 || 短路掉

    实例:

    public class DuanLu {
        public static void main(String[] args) {
            int a = 5;
            int b = 6;
            int c = 7;
            
            if(++a < 5 && ++b < 6 || ++c > 7)
                System.out.println(a + " , " + b + " , " + c); // 输出结果:6 , 6 , 8                
        }
    }

    上面的例子说明:++a 进行了运算,++b 被 && 短路,但是没有短路 || ,++c 进行了运算。

  • 相关阅读:
    自己第一个github开源的感受
    直播时代--IOS直播客户端SDK,美颜直播【开源】
    OpenCL / OpenGL / OpenAL
    FFmpeg 라이브러리 코덱과 영상 변환을 중심으로
    nginx + http2.0 解决浏览器跨域和同源限制问题
    软件编译系统构建
    SRS支持rtmp/srt/gb28181/webrtc上行推流和rtmp/http-flv/hls/dash/gb28181/webrtc下行拉流
    SIP UA/UAC/UAS/GB28181-Server/GB28181-Client 五合一
    SUPL(安全用户面定位)
    RTMP低延时配置
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9416131.html
Copyright © 2011-2022 走看看