1、逻辑运算:与/或/非 && || !
2、短路运算

package operator;

public class Demo03 {

    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)); //逻辑非

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4); //因为c<4结果是false,所以不会执行后面的c++,所以c的值还是5
        System.out.println(d);
        System.out.println(c); //输出5

        //与短路运算的对比
        int m = 5;
        boolean n = (m>4)&&(m++<4); //因为m>4结果是true,所以会执行后面的m++,所以m的值是5+1=6
        System.out.println(n);
        System.out.println(m); //输出6

    }

}

3、位运算:效率高,是直接和底层打交道
&,|,^,~,>>,<<,>>>

package operator;

public class Demo04 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101

        A&B: A与B  A与B上下比较,如果两个对应位都为1就是1,否则就是0 结果是0000 1100
        A|B:A或B  A与B上下比较,如果两个对应位都为0就是0,否则就是1 结果是0011 1101
        A^B:抑或  A与B上下比较,如果两个对应位都相同则为0,否则就是1 结果是0011 0001
        ~B:取反  和B完全相反  结果是1111 0010

        面试题:如果快速计算出2*8=16的结果  也就是2*2*2*2
        <<  左移
        >>  右移

        补充二进制:
        0000 0000:0
        0000 0001:1
        0000 0010:2
        0000 0011:3
        0000 0100:4  (2往左移一位变成4)
        0000 1000:8  (4往左移一位变成8)
        0001 0000:16  (8往左移一位变成16)
        结论:左移就相当于吧数字乘2,右移就是除2

         */
        System.out.println(2<<3);
    }

}
Posted on 2021-08-29 14:45  阿黎~  阅读(16)  评论(0编辑  收藏  举报