第二天0225 运算符、表达式、数据类型转换

  • 运算符
    • 用于操作变量和数值的操作符,运算符与数值组成的表达式。
    • 按功能分类
      • 赋值运算符:=,左侧只能是变量,右侧可以是变量、常量或表达式
      • 算术运算符:+-*/ % ++ --
        • ++ -- :只能操作证书类型,char,不能表达式。当前变量加1或减1。
          • 前置:先加减,再使用
          • 后置:先使用,再加减
          • i=i++问题 :先设置一个临时变量itmp= i,然后i=itmp;itmp++;所以i的值未变。
        • 赋值运算和算术运算可简写:+=,-=,*=,/=,%=
      • 关系运算符:关系运算符一般用于条件判断,结果为boolean类型
        • >,>=,<,<=,==,!=
      • 逻辑运算符
        • && 逻辑与,“并且”;左右结果必须为Boolean类型,从左至右一错即短路
        • || 逻辑或,“或者”;左右结果必须为Boolean类型,从左至右一对即短路
        • ! 逻辑非,对变量取反
        • 短路逻辑应用场景
          • 假设存在变量name,判断name的值是否为admin
            • if(name.equals("admin")){} 这种写法当name为空时会产生空指针异常
            • 改写:if(name!=null&&name.equals("admin")){}
          • 假设存在多个判断条件,其中一个判断比较耗时,比如判断a不耗时,b耗时
            • 则:if(a&&b){} 如果a为false,则不用判断b了,减少耗时
      • 位运算符:
        • & 按位与 6&2 等价于 0b110 & 0b010 = 0b010 (2)
        • | 按位或 6|2 等价于 0b110 | 0b010 = 0b110 (6)
        • ^ 异或 :相同为1,不同为0. 6^2 等价于 0b110^0b010 = 0b100 (4)
        • << 按位左移:整个数位左移,最右面补0。左移n位,表示原数值*2的n次方。
        • >> 按位右移:整个数位右移,如果是正数最左面补0,负数补1。右移n位,表示原数值除以2的n次方。
        • >>> 无符号右移, 整个数位右移,左侧补0。
        • 注:&、| 也可以操作布尔类型的变量或者表达式,但没有短路效果
      • 条件运算符:表达式1?表达式2:表达式3
        • 先判断1,1为true结果为2的值,false为3的值。
    • 按照运算符的操作个数分类
      • 一元运算符:! ++ --
      • 二元运算符:= + - * / % >> <<
      • 三元运算符:?:
    • 运算符的优先级
      • 一元>二元>三元
      • 算术>关系>逻辑>赋值
      • 使用小括号提升优先级
  • 表达式
    • 与运算符与操作数(变量、常量)组成的式子。单个操作数也可算。
    • 按照操作符类型分
      • 算术表达式:就是运算之后的值。
      • 关系表达式:Boolean类型的值。
      • 逻辑表达式:Boolean类型的值。
      • 赋值表达式:所赋的值就是表达式的值。
    • 表达式的类型:结果值的类型就是表达式的数据类型。
      • 类型的提升:参与表达式的数据属于不同的类型,会对结果类型造成影响。
        • 自动类型转换
      • 字符串的拼接符 +
        • "hello" + num (num = 10) "hello10"
  • 类型转换
    • 操作数不同数据类型,结果只能取一个,需转换为相同的数据类型参与操作。
    • 分类
      • 自动类型转换(隐式类型装换)
        • 规则
          • 1、两种数据类型兼容
          • 2、转换前的数据类型(源)小于转换后的数据类型(目标)范围
        • 方向:从左到右可以自动发生转换
          • byte(char/short)-->int -->long-->double
          • byte、char、short各自转为int类型
        • 注:
          • 即使自动类型转换也可能发生精度的丢失:long-->float
          • 反向也可以自动类型转换:int到byte(short/cahr),不能超过byte的范围
      • 强制类型转换(显式类型转换)
        • 变量 = (目标类型)源数据;
        • 强制类型转换有可能发生精度的丢失或数据溢出。
        • 强制类型转换前后的数据类型要兼容,Boolean类型不能与其他类型互转。
  • 练习:定义两个int类型的数,输出它们的和。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值