byte b1 = 3, b2 = 4

byte 型数据相加

参考:
我查到的大佬的解说
最近做了一道题有些疑惑,在网上查后还是决定记录一下,毕竟自己记性一般般呀。这年轻人😥
题目是这样的:

    byte b1=1,b2=2,b3,b6;
    final byte b4=4,b5=6;
    b6=b4+b5;
    b3=(b1+b2);
    System.out.println(b3+b6);

问:这段代码的输出结果是什么?或者发生编译错误或者运行期错误!

当时计算了一下,没错就是13嘛,能有啥错误,这不没超出byte的范围嘛!(内心肯定)
但是结果是错的,无情!
仔细观察:
b6 = b4 + b5 和b3 = (b1 + b2) 有什么区别?
为什么要写两遍?
b4 和 b5是final 修饰的常量 ,b1 和 b2是变量。

byte变量在进行计算时,是先转换为int计算的,计算完毕后int 值是不能直接赋值给byte,需要转换为int所以会产生编译错误!
而常量相加因为具有常量优化机制,所以可以直接识别为byte然后i相加完毕后判断没有超出byte范围,所以直接赋值OK没有报错。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值