A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;     //报错
原因分析:b1和b2均是变量,值不确定,相加后的值就有可能超出byte型的范围,故报错

以上是我的理解,和刘意老师今天讲的不太一样,请大家不吝指教!

8 个回复

倒序浏览
b1 + b2在参与运算的时候,首先会转换为int类型,而左边是byte类型的变量接收,肯定就报错了。
如果是常量的话,会先计算,看计算结果是否在限定的类型范围,如果在则不报错,不在才报错。
回复 使用道具 举报
探寻者 发表于 2015-1-19 22:16
b1 + b2在参与运算的时候,首先会转换为int类型,而左边是byte类型的变量接收,肯定就报错了。
如果是常量 ...

谢谢回复 又问:
byte b1 = 1;
byte b1 = 2L;  //报错

2在byte范围之内呀
回复 使用道具 举报
默认的加减乘除都是int类型
回复 使用道具 举报
本帖最后由 传慈 于 2015-1-20 13:15 编辑

byte b3=(byte)(b1+b2);强转一下,从int转成byte
如果是int i=b1+b2;就不会报错。
回复 使用道具 举报
huyang936 发表于 2015-1-19 22:47
谢谢回复 又问:
byte b1 = 1;
byte b1 = 2L;  //报错

类型时完全不同的啊,L是long类型的,byte类型的变量怎么能接受呢?
回复 使用道具 举报
学习下。。。。。
回复 使用道具 举报
b1 + b2在参与运算的时候,首先会转换为int类型,而左边是byte类型的变量接收,肯定就报错了。
如果是常量的话,会先计算,看计算结果是否在限定的类型范围,如果在则不报错,不在才报错。

大婶的回答.
回复 使用道具 举报
其实只要是思路一样就没必要纠结那么多不然容易把自己绕糊涂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马