运算符及其基础知识

  表达式:由操作数和符号组成的式子
     操作数:变量、常量和字面量
      变量:可以随时改变变量所代表的值

eg:
        int a = 10;
        a = 100;


    常量:常量值一旦确定不可更改
        //为了区分常量和变量,一般情况下常量名纯大写
        final int AGE = 100;
        //3、5等这些值为字面量
        
    运算符
        赋值运算符:= 将符号右边的内容赋值给左边
        算数运算符:+ - * / %
         除法运算如果只有整数参与结果只获取整数部分
        a = 10 / 20;
        System.out.println("a = "+ a);
       //  除法运算如果有小数参与就是正常运算
        double d = 10 /20;
        System.out.println("d ="+ d);
        // 取余运算(取模)
        a = 10 % 30;
        System.out.println("a = "+ a);
        d = 10.5 % 3;
        System.out.println("d = "+ d);
        
        
       复合运算符:+= -= %= /= *=
        int c = 10;
        c += 100;// c = c + 100;表示在c原有基础上加100
        System.out.println("c ="+ c);
        
        byte e = 100;
        byte r = e + 1;
        byte 、short等变量参与的算术运算,结果时int类型
              byte e = 100;
        //复合运算符会帮助我们进行类型转换
        e += 100;
        
        //关系运算符:> < >= == <= !=     关系表达式的结果肯定是布尔值
        boolean bool = a <= d;
        System.out.println(bool);
        
        //++ --自增自减: 在变量原有基础上加1或者减1
        a = 10;
        ++a;//在不参与其他运算时 ++a 与 a++相同
        /*
         * 参与其他运算时,++在后,先参与其他运算,再自增
         */
        int x = a++;
        System.out.println("x = "+ x);
        System.out.println("a ="+ a);
        
        a = 10;
        x =--a + a++ * ++a;//自左向右先搞定a的值
            System.out.println("x ="+ x);
            
            /*
             * 三目运算符:?值1:值2
             * 当?前面的表达式结果为true,整体式子结果为值1反之为值2
             */
            int bu = 10 > 5 ? 10 : 20;
            System.out.println("bu = "+ bu);
            /*
             * 逻辑运算符:&& || !
             * 逻辑运算符只能链接结果为布尔值的表达式
             * 例如 5 && 8 这是错误的  10 > 5 && false则为正确
             * 
             */
              //&&:有假即为假
            boolean res = 100 >101 && 5>3;
            System.out.println("res = "+ res);
            //&& 短路与:与连接的所有表达式,只要有假后续表达式不再执行
            res = 5 < 3 && a++ > 7 ;
            //& 通路与:它与短路与结果相同,只是在某个表达式false仍然会继续执行
            System.out.println("res = "+ res);
            System.out.println("a = "+ a);
            
            // ||:有真即为真 ||也被称为短路或    |被称为通路或
            //|| 短路或:与连接的所有表达式,只要有假后续表达式不再执行
            res = 5 < 3 || a++ > 7 ;
            //| 通路或:它与短路或结果相同,只是在某个表达式false仍然会继续执行
            System.out.println("res = "+ res);
            System.out.println("a = "+ a);
            
            // !取反:true取反为false false取反为true
            System.out.println( !(5 > 3) );//!取反优先度很高
            
            
            /*
             * 位运算符:<<(左移)、>>(右移)、&、|、^(异或)、~(取反)
             * 将数字转换成二进制后,再进行运算
             */
             //6左移1位 110 变为 11000 左移乘以2的n次幂右移除以2的n次幂
            a = 6 << 2;
            System.out.println("a = "+ a);
            
            //&:按位与将数字变为二进制,对应位上的数字进行运算,有0即为0
            /*
             * 101
             * 110
             * 100
             */
            a = 5 & 6;
            System.out.println("a = "+ a);
            //|:按位或将数字变为二进制,对应位上的数字进行运算,有1即为1
            /*
             * 101
             * 110
             * 111
             */
            a = 5 | 6;
            System.out.println("a = "+ a);
            
            //^:异或  相同即为0不同则为1
            /*
             * 101
             * 110
             * 011
             */
            a = 5 ^ 6;
            System.out.println("a = "+ a);
            
            /*
             * ~按位取反
             * 原码 、 反码 、补码
             * 原码按位取反为反码
             * 反码加一为补码
             * 正数的原码、反码、补码都相同 例如5的原反补:0000 0101
             * 负数在计算机中是以补码的形式存在,负数反码在符号位不变的情况下,其余位取反
             * 补码就是负数反码基础上加1
             * 
             * -5
             * 原码:1000 0101
             * 反码:1111 1010
             * 补码:1111 1011
             */
            /*
             * 0000 0110
             * ~取反后
             * 1111 1001(补码)
             * 由于符号位变成了1了所以是负数,负数在计算机中是补码,算出原码
             * 反码1111 1000
             * 原码1000 0111
             */
            int m = ~6;
            System.out.println("m = "+ m);
            /*
             * 原码:1000 0001
             * 反码:1111 1110
             * 补码:1111 1111
             * 
             * ~取反 负数实在补码的基础上进行~运算
             * 0000 000
             * 取反后最高位位0 ,是整数可以直接使用
             */
            int k = ~-1;
            System.out.println("k ="+ k);
            //无论正数还是负数~n 为-(n+1)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值