逻辑运算符

逻辑运算符

&&与运算符,同为true结果为true

public class Demo5 {
   public static void main(String[] args) {
       boolean a = true;
       boolean b = false;
       boolean c = true;
       System.out.println(a&&b);//false a为true b为false
       System.out.println(a&&c);//true a为true c为true
  }
}

 

&&与运算中的短路运算

如果在&&运算中第一个结果为false,直接返回false后面程序不执行

public class Demo5 {
   public static void main(String[] args) {
       int a = 5;
       boolean d = (a<4)&&(a++<5);
       System.out.println(d);//false
       System.out.println(a);//5 因为a<4为false所以d直接为false(a++)程序没有执行
  }
}

 

||与运算,同false 为false

public class Demo5 {
   public static void main(String[] args) {
       boolean a = false;
       boolean b = true;
       boolean c = false;
       System.out.println(a||b);//true a为false b为true
       System.out.println(a||c);//false a为false c为false
  }
}

 

!(a&&b) /(a||b)取反运算

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

 

位运算

&与运算 同为1时为1

A = 0011 1100
B = 0000 1101
A&B=0000 1100

|或运算 同为0时为0

A = 0011 1100
B = 0000 1101
A|B=0011 1101

^异或运算 相同时为0 不同时为1

A = 0011 1100
B = 0000 1101
A^B=0011 0001

~取反运算 0为1 1为0

A = 0011 1100
~A= 1100 0011
B = 0000 1101
~B= 1111 0010

 

<</>>运算

2乘8怎么运算最快?

public class Demo5 {
   public static void main(String[] args) {
       System.out.println(2<<3);//16 相当于与2*2*2*2
  }
}

原因:

/*  0000 0001   2
           0000 0010   4
           0000 0100   6
           0000 1000   8
           0001 0000   16
           在二进制中每次向左移(<<)1位乘2
                    每次向右移(>>)1位除2

        */
2<<3 相当于与2*2*2*2

 

相当于与2*2*2*2

posted @ 2021-03-01 12:53  默默努力的路人甲  阅读(48)  评论(0)    收藏  举报