Java03 运算符

5.运算符
   表达式:是由操作数和符号组成的式子
        操作数:变量、常量和字面量
        变量,在后续的使用过程中,可以随时更改它的值
        常量,被final修饰的变量,值一旦确定,就不可更改(java中常量一般用纯大写)eg:final int b = 10;
        字面量,按照字面意思理解的量,不可更改   eg:1 true 'a'
优先级:算术运算符>关系运算符>逻辑运算符   (!取反的优先级   > ()括号的优先级)
                                                                           (  &  >  ||  )
eg:if(!(year % 2 == 0))       若为if(!year % 2 == 0)    // !year报错  !优先级比括号高
    (1)算术运算符
        +、-、*、/、%(取余)
        如果参与除法运算的都是整数型,那么就是取整运算(结果只取整数位)
        如果有浮点型参与除法运算,就是正常的除法运算
        四则运算中,计算结果的数据类型和参与运算中表数范围最大的类型一致
%取余数
       范围小于int的变量(byte、short)进行四则运算之后的结果的类型为int
eg:byte s = 2;
       byte s1 = 3;
       short s2 =  s + s1;    //报错
       short s2 = (short)(s + s1);   //short自动转int
eg:System.out.println(-5 % -2);  //商2余-1
       System.out.println(-5.5 % 2); //商2余-1.5
       System.out.println(-5.5 % -2); //商2余-1.5 
    (2)复合运算符
        一个运算符是由=和其它运算符组成的(可以自动转类型)
+= -= *= /= %=  
        使用复合运算符时,自动转换类型,不用我们自己转换类型
eg:short s0 = 1;
        s0 += 1;      //s0 = (short)(s0 + 1),可自动转换int
        s0 = s0 + 1;   //s0 + 1为int,s0之前定义short,比int小,需强转
    (3)自增自减
        自增++  自减--:在变量原有的基础上 加1或者减1
        不论自增符号在变量之前还是之后,该变量本身肯定加1
如果参与其它运算,如果++在前,先给本身自增1,然后参与其它运算
                              如果++在后,先参与其它运算,然后再给本身自增1
eg:int i = 10;
       int j = i++ + ++i * --i;
运算:  10  +  12  *  11         j=142
i最终:   11     12     11         i=11    
    (4)关系运算符
        >、<、>=、<=、==、!=(不等于)
        关系运算的结果肯定是布尔值
eg:boolean result = 10 == 3;    //false
    (5)逻辑运算符
        &&(与)、||(或)、!(非)
逻辑运算的结果肯定是布尔值
逻辑运算符只能连接结果为布尔值的表达式
        &&(短路与):连接的表达式中只要有一个表达式结果为假,整体表达式的结果就为假;
           有假即为假       
                   区别:如果某个表达式的结果已经是false了,后面与连接的表达式就不再执行;
                             逻辑运算率高;
&(通路与):如果某个表达式的结果已经是false了,后面与连接的表达式继续执行(&的运算结果与&&一致) 
          逻辑运算率低;
                    还是位运算符  
          eg:result = 10 >a && a > 3;   //之前定义a=10
       (java中关系式不能连续用   eg:10>a>3 从左到右——10>a的结果与3比较,不符合规范)
        ||(短路或):连接的表达式中只要有一个表达式结果为真,整体表达式的结果就为真;
        有真即为真      当某个表达式的结果为true时,后面或连接的表达式就不再执行
 |(通路或):当某个表达式的结果为true时,后面或连接的表达式继续执行
        eg:result = 10 > 20  ||  7 > 3  ||  a++ > 8;     //true      a++ > 8不执行
        !(非,结果为布尔值的表达式):取反操作,表达式结果为true,取反之后就为false
eg:result = !true;     //false
eg:result = a > 5  == true;   //== true写法多余,不推荐      一般写作!(a > 5);等同于a <= 5;
    (6)位运算符
        &(按位于)、|(按位或)、^(异或)、<<(左移)、>>(右移)、~(按位取反)
先将参与运算的数字都转换成二进制,然后按位计算
        &:有0即为0
            eg:5&2
                        5   101
                        2   010
                             000
        |:有1即为1
        ^(异或):相同即为0,不同即为1
            异或的特点:
1.相同为0,不同为1;
2.任何数字异或上0,结果为还是该数字   a ^ 0 = a   
3.任何数字异或上本身,结果为0       a ^ a = 0 
4.异或符合交换律       a ^ b = b ^ a
5.异或符合结合律       (a ^ b) ^ c = a ^ (b ^ c)
        <<(左移)、>>(右移)    (高位补0,低位舍弃)
            m左移了n位,m << n; 结果为m乘以2的n次幂
m右移了n位,m >> n; 结果为m除以2的n次幂
            << 表示左移移,不分正负数,低位补0
>> 表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
>>> 表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

eg:2如何快速变成8  2 × 4 = 8——2 × 2的2次幂——2左移两位
       8如何快速变成2     8右移两位
eg:r = 3 << 33;   
       //由于r = 3 << 32;后为3本身,故该题等同于r = 3 << 1;为6(溢出为1个圈,左出右进)
        ~(按位取反):(按位取反对所有位进行操作,包括符号位)
            原码:数字转换成二进制之后的二进制数
反码:原码按位取反就得到了反码
补码:反码加1就得到了补码
负数在计算机中是以补码的形式存储      负数的反码 = 它的原码符号位不变,其他位取反;
                                                            负数的补码 = 它的反码 +1;
正数的原码、反码、补码相同
0没有正负之分(无符号位  0000 0000)
对正数取反:~n  得到的结果就是    -(n+1)
对负数取反:~-n  得到的结果就是   n-1
eg:1原码                 0000 0001    1
       取反之后的结果   1111 1110                -2
eg:-2原码:              1000 0010
       -2反码:              1111 1101
       -2 补码:              1111 1110
        ~ -2 == ~1111 1110 == 0000 0001      1
    (7)三目运算符
        结果为布尔值的表达式? 值1:值2
当表达结果为true时,三目运算符的结果为  值1
当表达结果为false时,三目运算符的结果为  值2
 eg:10 > 100 ? 1 : 9;  //结果为9

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值