黑马程序员技术交流社区
标题:
赋值语句为啥子这样会报错
[打印本页]
作者:
whxwkb
时间:
2016-3-17 10:42
标题:
赋值语句为啥子这样会报错
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
前面都定义好byte了,怎么就会报错?
而 byte b3 = 3 + 4
就不报错
作者:
ameanboy
时间:
2016-3-17 10:47
自动类型提升啊,(b1+b2)被提升为int了,需要显式类型转换才行
byte b3 = (int)(b1+b2);
作者:
lijiy09
时间:
2016-3-17 11:17
数据参与运算,先被默认转换为int类型
作者:
wl756071448
时间:
2016-3-17 11:22
本帖最后由 wl756071448 于 2016-3-17 11:25 编辑
byte类型在运算时会自动提升为int类型,所以b1+b2的结果就是int类型的,当你把int类型的b1+b2赋值给byte类型的b3时,就会提示报错,可能损失精度,
这里如果用到强制类型转换 byte b3 = (byte)(b1+b2),就没事了
作者:
xushao
时间:
2016-3-17 12:26
在参与运算时,byte会自动转换成int 类型,因为java 默认为int类型。最后结果的数据类型为int ,而byte的等级低于int 所以再重新赋值给byte类型时,必须进行强制转换
作者:
兵蜂
时间:
2016-3-17 12:37
学习了,谢谢
作者:
whxwkb
时间:
2016-3-18 23:55
wl756071448 发表于 2016-3-17 11:22
byte类型在运算时会自动提升为int类型,所以b1 b2的结果就是int类型的,当你把int类型的b1 b2赋值给byte类 ...
多谢!学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2