Java基础【之】逻辑运算、比较、位运算(对于二进制计算,理解要到位)

1.数学运算(加、减、乘、除、取模、拼接)

  • 赋值(=)、正号(+)、负号(-)、加(+)、减(-)、乘(*)、整除(/)、余数(取模)(%)、字符串拼接(+)
    “+”与字符串一起连接使用时,表示把非字符串转换成字符串
    //1.数学运算
    //正2 :2
    //负2 :-2
    //2加1 :3
    //2减1 :1
    //2乘1 :2
    //2除1 :2
    //2对1取模 :0
  public static void main(String[] args) {

        int a = 0;

        a = +2;
        System.out.println("正2 :" + a);

        a = -2;
        System.out.println("负2 :" + a);

        a = 2 + 1;
        //     当a=2时,可以简写为     a += 1;
        System.out.println("2加1 :" + a);

        a = 2 - 1;
        //     当a=2时,可以简写为    a -= 1;
        System.out.println("2减1 :" + a);

        a = 2 * 1;
        //     当a=2时,可以简写为     a *= 1;
        System.out.println("2乘1 :" + a);

        a = 2 / 1;
        //     当a=2时,可以简写为    a /= 1;
        System.out.println("2除1 :" + a);

        a = 2 % 1;
        //     当a=2时,可以简写为   a %= 1;
        System.out.println("2对1取模 :" + a);

3.比较运算(大、小、相等、实例类型)

  • 大于(>),小于(<),等于(==),大于等于(>=),小于等于(<=)
  • 实例的类型判断(instanceof)
    //比较运算
    //a大于b:false
    //a小于b:true
    //a等于b:false
    //a大于等于b:false
    //a小于等于b:true 
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        System.out.println("a大于b:" + (a > b));
        System.out.println("a小于b:" + (a < b));
        System.out.println("a等于b:" + (a == b));
        System.out.println("a大于等于b:" + (a >= b));
        System.out.println("a小于等于b:" + (a <= b));
        
        
        Object c = 1;
        System.out.println("c 是否为 Object的实例: " + (c instanceof Object));// true
        System.out.println("c 是否为 String的实例: " + (c instanceof String));// false
        System.out.println("c 是否为 Integer的实例: " + (c instanceof Integer));// true
   
    }

4.逻辑运算(与、或、非、异或)

  • 逻辑与 (&)、短路与 (&&)
    & 与 && 的结果一致,都表示并且的关系,两边为 true 才为 true
    区别在于(& 两边都需要判断)、(&& 如果左边为false,右边就不需要判断了)
	//逻辑与 (&)、短路与 (&&)
    public static void main(String[] args) {
    
        boolean true_ = true;
        boolean false_ = false;

        System.out.println("& 与 && 的结果一致,都表示并且的关系,两边为 true 才为 true");
        System.out.println("区别在于(& 两边都需要判断)、(&& 如果左边为false,右边就不需要判断了)");

        System.out.println("true & false = " + (true_ & false_));//false
        System.out.println("false & true = " + (false_ & true_));//false
        System.out.println("true & true = " + (true_ & true_));//true
        System.out.println("false & false = " + (false_ & false_));//false

        System.out.println("true && false = " + (true_ && false_));//false
        System.out.println("false && true = " + (false_ && true_));//false
        System.out.println("true && true = " + (true_ && true_));//true
        System.out.println("false && false = " + (false_ && false_));//false

    }


  • 逻辑或(|)、短路或 (||)
    | 与 || 的结果一致,都表示或者的关系,一边为 true 就为 true
    区别在于(| 两边都需要判断)、(|| 如果左边为true,右边就不需要判断了)
	//逻辑或(|)、短路或 (||)
    public static void main(String[] args) {
    
        boolean true_ = true;
        boolean false_ = false;

        System.out.println("| 与 || 的结果一致,都表示或者的关系,一边为 true 就为 true");
        System.out.println("区别在于(| 两边都需要判断)、(|| 如果左边为true,右边就不需要判断了)");
        System.out.println("true | false = " + (true_ | false_));//true
        System.out.println("false | true = " + (false_ | true_));//true
        System.out.println("true | true = " + (true_ | true_));//true
        System.out.println("false | false = " + (false_ | false_));//false

        System.out.println("true || false = " + (true_ || false_));//true
        System.out.println("false || true = " + (false_ || true_));//true
        System.out.println("true || true = " + (true_ || true_));//true
        System.out.println("false || false = " + (false_ || false_));//false

    }


  • 逻辑非 (!)
    ! ,表示 取反
    符号右边为 true,取反后结果为:false
    符号右边为 false,取反后结果为:true\n
	//逻辑非 (!)
    public static void main(String[] args) {
        int a = 1;
        int b = 2;

        System.out.println("! ,表示 取反");
        System.out.println("符号右边为 true,取反后结果为:false");
        System.out.println("符号右边为 false,取反后结果为:true\n");

        System.out.println("a=1 ; b=2 ;如下");
        System.out.println("a 等于 b ;  结果:" + (a == b));//false
        System.out.println("取反(a 等于 b) ;  结果:" + !(a == b));//true


    }


  • 逻辑异或(^)
    ^ ,表示两边不同结果为 true , 两边相同结果为 false
	//逻辑异或(^)
    public static void main(String[] args) {
        boolean true_ = true;
        boolean false_ = false;

        System.out.println("^ ,表示两边不同结果为 true , 两边相同结果为 false");

        System.out.println("true 异或 false ;  结果:" + (true_ ^ false_));//true
        System.out.println("true 异或 true ;  结果:" + (true_ ^ true_));//false
        System.out.println("false 异或 false ;  结果:" + (false_ ^ false_));//false

    }

5. 三元表达式

  • 三元表达式
    ($表达式) ? {$1} : {$2};
    表达式结果为 true,取第一个值 $1
    表达式结果为 false,取第二个值 $2
    public static void main(String[] args) {
        int a = 1;
        int b = 2;

        System.out.println("三元表达式--->    {$表达式} ? {$1} : {$2}; ");

        //例1: 表达式结果为 true,取第一个值 $1
        String str_01 = (a > b) ? "a>b 成立" : "a>b 不成立"; //a>b 不成立
        System.out.println(str_01 + "\n");

        //例2: 表达式结果为 false,取第二个值 $2
        String str_02 = (a < b) ? "a<b 成立" : "a<b 不成立"; //a<b 成立
        System.out.println(str_02 + "\n");
    }

6. 位运算(二进制计算)(注意理解)

  • 位运算(二进制计算)
    1.转换:先将被计算数,从十进制转化为二进制。
    2.改值或位置:然后按运算符号对应的逻辑,直接整体左右移动位置,或者变动每个位的值(0/1)。
    3.转换:最后,将得到的二进制位,转换为十进制,得出结果。
  • 位运算
  • 左移 (<<) : 左移,左侧丢弃,右侧补0;(左移 x2)
  • 右移 (>>) : 右移,右侧丢弃,左侧补相同(原来是0就补0,原来是1就补1);(右移 /2)
  • 无符号右移 (>>>) : 右移,右侧丢弃,左侧补0;
  • 取反(~) : 按补码各位取反,1变为0;0变为1;
  • 位比较 (0:false ; 1:true ;)
  • 与 (并且) (&) : 1&1时结果是1,否则是0;
  • 或 (或者) (|) : 0|0时结果是0,否则是1;
  • 异或 (不同) (^) :相同位 ^ 运算,结果是0;不同位 ^ 运算结果是1;

        // 十进制:[128/0]  [64/0]  [32/0]  [16/0]  [8/0]  [4/0]  [2/0]  [1/0]
        // 二进制: [1/0]    [1/0]   [1/0]   [1/0]  [1/0]  [1/0]  [1/0]  [1/0]

        //十进制 : 二进制
        //  0:   0000 0000
        //  1:   0000 0001
        //  2:   0000 0010
        //  4:   0000 0100
        //  8:   0000 1000
        //  16:  0001 0000
        //  32:  0010 0000

        int a = 0;
        
        a = 8 << 2;
        System.out.println("8 << 2 ; 结果=" + a); // 32
        
        a = 8 >> 2;
        System.out.println("8 >> 2 ; 结果=" + a);// 2
        
        a = 8 >>> 2;
        System.out.println("8 >>> 2 ; 结果=" + a);// 2
        
        a = 8 & 2;
        System.out.println("8 & 2 ; 结果=" + a); // 0
        
        a = 8 | 2;
        System.out.println("8 | 2 ; 结果=" + a);// 10
        
        a = 8 ^ 2;
        System.out.println("8 ^ 2 ; 结果=" + a);// 10
        
        a = ~8;
        System.out.println("~8 ; 结果=" + a);// -9

《下一篇:循环与控制》

《目录:Java渐进式学习》

《幕》

  • 留白 —<老吉>
  • ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长毛山顶洞人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值