Java(2)运算符

1数学运算符

    @Test
    public void test01() {
        int a = 10, b = 20;
        // 加号两端只要一个变量为字符串则代表字符串的拼接
        // 加号两端变量为数值型则代表数学运算符
        int c = a + b;
        System.out.println("a + b = " + c);//a + b = 30
        int d = a - b;
        System.out.println("a - b = " + d);//a - b = -10
        int e = a * b;
        System.out.println("a * b = " + e);//a * b = 200
        // 在java中除法运算为地板除
        int f = a / b;
        System.out.println("a / b = " + f);//a / b = 0,只保留整数部分

        double g = a / b;
        System.out.println("a / b = " + g);//a / b = 0.0
        double h = (a + 0.0) / (b + 0.0);
        double i = (a + 0.0) / b;
        double j = a / (b + 0.0);
        System.out.println("h = " + h);//h = 0.5
        System.out.println("i = " + i);//i = 0.5
        System.out.println("j = " + j);//j = 0.5

        int aa = 20;
        int bb = 3;
        // 20除以3等于6余2
        // % 取模运算 取余数
        int cc = aa % bb;
        System.out.println("aa % bb = " + cc);//aa % bb = 2
    }

2自增与自减

    @Test
    public void test02() {
        int num = 10;
        num = num + 5;
        System.out.println(num);//15
        num += 5;
        System.out.println(num);//20
    }

    @Test
    public void test03() {
        int num = 10;
        num = num + 1;
        System.out.println(num);//11
        num += 1;
        System.out.println(num);//12
        // 自增
        num++;
        System.out.println(num);//13
    }

    @Test
    public void test04() {
        int num = 10;
        num = num - 1;
        System.out.println(num);//9
        num -= 1;
        System.out.println(num);//8
        // 自减
        num--;
        System.out.println(num);//7
    }

    @Test
    public void test05() {
        int num = 10;
        num = num * 5;
        System.out.println(num);//50
        num *= 5;
        System.out.println(num);//250
    }

    @Test
    public void test06() {
        int num = 50;
        num = num / 5;
        System.out.println(num);//10
        num /= 5;
        System.out.println(num);//2
    }

3a++与++a

    @Test
    public void test07() {
        int num = 10;
        System.out.println(num++);//10
        System.out.println(num);//11
    }

    @Test
    public void test08() {
        int num = 10;
        System.out.println(++num);/11
        System.out.println(num);//11
    }

    @Test
    public void test09() {
        int num = 10;
        System.out.println(num++ * ++num);//120
        System.out.println(num);//12
    }

4比较运算符

    @Test
    public void test10() {
        // 比较运算符返回值为 boolean 值
        // == 等等 比较对象是否相等 10 == 10返回True 10 == 20返回False
        // != 不等于 比较对象是否不相等 10 != 10返回False 10 != 20返回True
        // > 大于 返回x大于y 10 > 20返回False 20 > 10返回True
        // < 小于 返回x小于y 10 < 20返回True 20 < 10返回False
        // >= 大于等于  x是否大于等于y x不小于y
        // <= 小于等于  x是否小于等于y x不大于y
        System.out.println("10 == 10 >>> " + (10 == 10));//10 == 10 >>> true
        System.out.println("10 == 20 >>> " + (10 == 20));//10 == 20 >>> false
        System.out.println("10 != 10 >>> " + (10 != 10));//10 != 10 >>> false
        System.out.println("10 != 20 >>> " + (10 != 20));//10 != 20 >>> true
        System.out.println("10 > 20 >>> " + (10 > 20));//10 > 20 >>> false
        System.out.println("20 > 10 >>> " + (20 > 10));//20 > 10 >>> true
        System.out.println("10 < 20 >>> " + (10 < 20));//10 < 20 >>> true
        System.out.println("10 > 20 >>> " + (10 > 20));//10 > 20 >>> false
        System.out.println("10 >= 9 >>> " + (10 >= 9));//10 >= 9 >>> true
        System.out.println("10 >= 10 >>> " + (10 >= 10));//10 >= 10 >>> true
        System.out.println("10 >= 11 >>> " + (10 >= 11));//10 >= 11 >>> false
        System.out.println("10 <= 9 >>> " + (10 <= 9));//10 <= 9 >>> false
        System.out.println("10 <= 10 >>> " + (10 <= 10));//10 <= 10 >>> true
        System.out.println("10 <= 11 >>> " + (10 <= 11));//10 <= 11 >>> true
    }

5逻辑运算符

   @Test
    public void test11() {
        // 逻辑运算的返回值为布尔型
        int a = 10;
        int b = 20;
        int c = 30;
        // 当两个条件同时满足的时候使用&符号
        // 逻辑与 &
        // &符号两端表达式返回结果同时为true的时候则整体返回值为true
        // &符号两端表达式返回有一个为false则整体返回值为false 当第一个表达式返回结果为false的时候第二个表达式仍然然要做计算
        System.out.println(b > a & c > a);//true
        System.out.println(a > b & c > a);//false
        System.out.println("+++++++++++++++++");

        // 当两个条件满足其中任意一个条件的时候使用|符号
        // 逻辑或 |
        // |符号两端表达式返回有一个为true则整体返回值为true 当第一个表达式返回结果为true的时候第二个表达式仍然要做计算
        // |符号两端表达式返回结果同时为false的时候则整体返回值为false
        System.out.println(b > a | a > c);//true
        System.out.println(a > b | a > c);//false
        System.out.println("+++++++++++++++++");

        // 返回值为当前值的相反值 true取反就是false false取反就是true
        System.out.println(!true);//false
        System.out.println(!false);//true
        System.out.println(!!true);//true
        System.out.println(!!false);//false
    }

    @Test
    public void test12() {
        // 逻辑运算的返回值为布尔型
        int a = 10;
        int b = 20;
        int c = 30;
        // 当两个条件同时满足的时候使用&&符号
        // 短路与 &&
        // &&符号两端表达式返回结果同时为true的时候则整体返回值为true
        // &&符号两端表达式返回有一个为false则整体返回值为false 当第一个表达式返回结果为false的时候则第二个表达式不再计算 直接整体返回false
        System.out.println(b > a && c > a);//true
        System.out.println(a > b && c > a);//false
        System.out.println("+++++++++++++++++");

        // 当两个条件同时满足其中一个条件的时候使用||符号
        // 短路或 ||
        // ||符号两端表达式返回有一个为true则整体返回值为true 当第一个表达式返回结果为true的时候则第二个表达式不再计算 直接整体返回true
        // ||符号两端表达式返回结果同时为false的时候则整体返回值为false
        System.out.println(b > a || a > c);//true
        System.out.println(a > b || a > c);//false
        System.out.println("+++++++++++++++++");

        // 返回值为当前值的相反值 true取反就是false false取反就是true
        System.out.println(!true);//false
        System.out.println(!false);//true
        System.out.println(!!true);//true
        System.out.println(!!false);//false
    }

6位运算符

    @Test
    public void test13() {
        // 按位与运算 1 00000101 00000011 00000001
        System.out.println(5 & 3);
        // 按位或运算 7 00000101 00000011 0000111
        System.out.println(5 | 3);
        // 按位异或运算 只要相同都是false(0) 只有不同才是true(1)
        // 6 00000101 00000011 0000110
        System.out.println(5 ^ 3);
        // 原数据按位亦或一个参考数据 得到一个新的数据 这个新的数据按位亦或相同的参考数据得到原数据
        int x = 5, y = 3;
        int z = x ^ y;
        System.out.println("z = " + z);//z = 6
        int num = z ^ y;
        System.out.println("num = " + num);//num = 5
        // ~按位取反 注意:二进制中,最高位是符号位   1表示负数,0表示正数
        System.out.println(~3);//-4,-(00000011 + 1) = -(00000100)= -4,
    }

7左移,右移,反码,补码

    @Test
    public void test14(){
        // 右移相当于除以2的n次幂
        // >>> 表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0
        // 8 / 2
        System.out.println(8 >>> 1);//4
        // 8 / 4
        System.out.println(8 >>> 2);//2
        // 8 / 8
        System.out.println(8 >>> 3);//1
        // 8 / 16
        System.out.println(8 >>> 4);//0

        System.out.println(-8 >>> 1);//2147483644
        System.out.println(-8 >>> 2);//1073741822
        System.out.println(-8 >>> 3);//536870911
        System.out.println(-8 >>> 4);//268435455
        System.out.println("+++++++++++++++");
        // >>  表示右移,如果该数为正,则高位补0,若为负数,则高位补1
        System.out.println(8 >> 1);//4
        System.out.println(8 >> 2);//2
        System.out.println(8 >> 3);//1
        System.out.println(8 >> 4);//0

        System.out.println(-8 >> 1);//-4
        System.out.println(-8 >> 2);//-2
        System.out.println(-8 >> 3);//-1
        System.out.println(-8 >> 4);//-1
        System.out.println("+++++++++++++++");

        // 左移相当于乘以以2的n次幂
        System.out.println(2 << 1);//4
        System.out.println(2 << 2);//8
        System.out.println(2 << 3);//16
        System.out.println(2 << 4);//32

        System.out.println(-2 << 1);//-4
        System.out.println(-2 << 2);//-5
        System.out.println(-2 << 3);//-16
        System.out.println(-2 << 4);//-32
        System.out.println("+++++++++++++++");
        
        // 反码;反码 = 补码-1;(~x) = -(x + 1)
        //正数反码为这个数加1的负数(绝对值加1再负数)
        System.out.println(~1);//-2
        System.out.println(~10);//-11
        System.out.println(~100);//-101
        //负数反码为这个数加1的正数(绝对值减1)
        System.out.println(~(-1));//0
        System.out.println(~(-10));//9
        System.out.println(~(-100));//99
        
        //补码;补码 = 反码+1
        1 >>> -1
        10 >>> -10
        100 >>> -100
        -1 >>> 1
        -10 >>> 10
        -1000 >>> 100
        
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值