数据类型转换案例练习

数据类型转换案例练习

案例:

  • 定义三个byte类型的变量,给b1,b2赋值,b没有值
    在这里插入图片描述

  • 首先我们让b1与b2相加,这时候还不等我们运行程序,编译器就已经报错,提示“change type of ‘b’ to int”错误信息,当我们强行运行后,控制台爆出“cannot convert from int to byte”错误信息,意思是:“无法将int转换为字节”。这就纳闷了,明明使用的两个byte类型相加,为什么提示无法将int转换为字节呢?原因是:Java在基本数据类型进行计算的时候,会将整型的数字先转化为int类型,然后进行计算,b1+b2则转化为 (int)1+(int)2=(int)3,计算后返回的值为int类型,因为byte类型数值范围小于int类型,又没有强制转换,所以编译器认为这样做不合法,会损失数据精度,因此报错[^1]。


  • 下面我们来看b = 3 + 4 会是什么结果:
    在这里插入图片描述
    -由图可见:b = 3+4通过编译并运行成功返回7,这时候可能就有些疑惑了,为什么 b = b1+b2不行,而b = 3+4可以呢?此处我们借助反编译工具(XJad)看一下编译器对b=3+ 4是如何处理的:
    在这里插入图片描述
    -由反编译class文件得出,编译器在编译当前类的Java文件时,1和2是两个byte类型的常量,先把结果计算出来后,然后判断结果是否在byte范围内(-128~127),如果在就不报错,输出结果。

  • 注:数据类型(小 -->大)

    数据类型所占字节
    boolean未定
    byte1字节
    char2字节
    short2字节
    int4字节
    long8字节
    float4字节
    double8字节
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值