Java——基本运算符一些重要的点

1、赋值运算符
扩展的赋值运算符(+=,-=,*=,/=,%=)的特点: 隐含了自动强制转换。

面试题:
    short s = 1;
    s = s + 1;      //这里会提示损失精度,因为s参与运算会先转成int,然后把int赋值给short就会提醒损失精度

    short s = 1;
    s += 1;      //这里运行通过,因为+=里包含了强制转换,即:s = (short) (s + 1)

2、逻辑运算符:
  逻辑与& :有false则false
  逻辑或| :有true则true
  逻辑异或^ : 相同为false,不同为true
  逻辑非! :非false则true,非true则true
       (偶数个!不改变本身)
 **注:
  1> &、|、^、! ,当两边值是逻辑值时,它们是逻辑运算符,当两边是数值时,它们是位运算符。
  2> &&和&的区别: &&具有短路功能,即左边为false则右边不运行。
    || 和 | 的区别: ||具有短路功能,即左边为true则右边不运行。**
  
3、位运算符:
   ①按位与&:按位取与运算
   ②按位或 | :按位取或运算
   ③按位取反~:按位取反,1为0,0为1
   ④按位异或^:按位取异或运算
          注:一个数据对另一个数据连续取异或运算两次,数据不变
          即:a ^ b ^ b = a
      面试题:实现两个整形数据a=1,b=2,的交换
      方式一:引用第三方变量(开发中用)
          int c ;
          c = a;
          a = b ;
          b = c ;
      方式二:用异或实现(面试用)
         //左边:a , b , a
         //右边 a ^ b
          a = a ^ b ;
          b = a ^ b ;
          a = a ^ b ;
      方式三:变量相加来实现
          a=a+b;
          b=a-b;
          a=a-b;
      方式四:一句话搞定
          b=( a+b ) - ( a=b ) ;  
   ⑤左移<< :左边最高位补丢弃,右边补齐0 。
     3<<2 :往左移2位=左边的数据(3)×2的移动次幂,即3×2^2
   ⑥右移>>:最高位是0,左边,补齐0;最高位是1,左边补1 。
       24>>2:往右移2位=左边的数据(24)/ 2的移动次幂,即24/2^2
   ⑦无符号右移>>> :无论最高位是0或者1,左边补齐0 。
     
      面试题:请用最有效率的方式计算2×8的结果?
            2<<3 (= 2×2^3=2×8)
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值