秦疆的JavaSE课程笔记:29 基础 逻辑运算符 位运算符

  • 逻辑运算符:&&与,||或, !
public class Dome1 {  
    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

与:两个变量为真,结果为真。
或:两个变量一个为真,结果为真。
非:真变假,假变真。

  • 短路运算
public class Dome2 {  
    public static void main(String[] args) {  
        int c = 5;  
        boolean d = (c<4)&&(c++<4);  
        System.out.println ("c="+(c));
        System.out.println ("d="+(d));
        }  
}
=========
输出:
c=5
d=false
  • 与运算判断为真的条件是变量皆为真,代码boolean d = (c<4)&&(c++<4);执行中,首先发现c<4为假,则结果必为假,就不会执行后续代码c++<4,也就没有执行c++,所以输出c的值依旧是5

  • 位运算符:&与,|或,^异或,~非,>>右移,<<左移,>>>无符号右移
    A = 1100 0011
    B = 0101 1010
    A&B = 0101 0010
    A|B = 1101 1011
    A^B = 1001 1001
    ~A = 0011 1100

  • 问,2*8怎么运算最快?

public class Dome3 {  
    public static void main(String[] args) {  
        System.out.println(2<<3);  
        }  
}
=========
输出:
16
  • 将十进制数用二进制表示:
    1=0000 0001
    2=0000 0010
    3=0000 0011
    4=0000 0100
    注意2和4的二进制写法,相当于整个代码向左位移了1位。那么同理继续左移:
    8=0000 1000
    16=0001 0000
    即16=2<<3。
  • >>右移相当于除以二,<<左移相当于乘以二。
posted @ 2023-11-14 13:22  Acolyte_9527  阅读(7)  评论(0编辑  收藏  举报