Day15 逻辑运算符、位运算符

发布时间 2023-12-03 15:07:29作者: 白小帆

逻辑运算符、位运算符

1.逻辑运算符

  • 与(&&): 两个变量只要有一个是假,结果就是假(两个都是真,结果才是真)
  • 或 (||) : 两个变量只要有一个为真,结果就是真(两个都为假,结果才为假)
  • 非 (!( ) ):与括号内结果相反
package operator;

//逻辑运算符
public class Demo05 {
    public static void main(String[] args) {
        //与(&&)   或(||)   非(!)
        boolean a = true;
        boolean b = false;

        //注意下列:""冒号里面的内容为字符串 为了输出结果更加明白 用+与要计算部分相连接 多个数相加 优先计算括号内的内容
        System.out.println("a && b:"+(a&&b));//结果为 a && b:false
        //与(&&):两个变量都为真,结果才为true ; 两个变量只要有一个是假的,结果就是假
        System.out.println("a || b:"+(a||b));//结果为 a || b:true
        //或(||):两个变量有一个为真,结果才为true
        System.out.println("!(a && b):"+!(a&&b));//结果为 !(a && b):true
        //非(!(a&&b)):与括号内的结果相反  如果真,则为假   如果假....

        System.out.println("========================================================================");



        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);//结果为false
        System.out.println(c);//结果为5
        /*解析:由于与(&&)是只要有一个变量为假,结果就是假,所以在boolean d = (c<4)&&(c++<4)后半部分,
        (c<4)已经是假了,后面的代码程序(c++<4)并不会去执行与计算,即------------>短路运算
        所以c++并没有得到运算,这也就是为什么c的值还是5的原因
         同理 ||运算也是一样   只要有一个是真,那结果就是真,后面也不会去运算
         
         */
         
         
    }
}

2.位运算符

package operator;
//位运算符
public class Demo06 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        ----------------------------------------------------------------------
        A&B = 0000 1100 //按位与(&):两个都为1,结果才为1,其余都是0
        A|B = 0011 1101 //按位或(|):两个都为0,结果才是0,只要有一个1则都是1
        A^B = 0011 0001 //按位异或(^):两个都相同则为0,不同则为1
        ~B = 1111 0010  //按位取反( ~ ):把B的二进制数  0变1  1变0;


        2*8 = 16      2*2*2
        <<   *2
        >>   /2

         */
        
        System.out.println(2<<3);//结果为16    //(左移)<<    2*2*2*2=16     2* 三个2
        System.out.println(32>>4);//结果为2    //(右移)>>    32/2/2/2/2=2    32/四个2
    }
}