黑马程序员技术交流社区

标题: 关于类型转换的一道题,请大家不吝指教! [打印本页]

作者: huyang936    时间: 2015-1-19 21:43
标题: 关于类型转换的一道题,请大家不吝指教!
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;     //报错
原因分析:b1和b2均是变量,值不确定,相加后的值就有可能超出byte型的范围,故报错

以上是我的理解,和刘意老师今天讲的不太一样,请大家不吝指教!
作者: 探寻者    时间: 2015-1-19 22:16
b1 + b2在参与运算的时候,首先会转换为int类型,而左边是byte类型的变量接收,肯定就报错了。
如果是常量的话,会先计算,看计算结果是否在限定的类型范围,如果在则不报错,不在才报错。
作者: huyang936    时间: 2015-1-19 22:47
探寻者 发表于 2015-1-19 22:16
b1 + b2在参与运算的时候,首先会转换为int类型,而左边是byte类型的变量接收,肯定就报错了。
如果是常量 ...

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

2在byte范围之内呀
作者: 汝建国    时间: 2015-1-20 11:45
默认的加减乘除都是int类型
作者: 传慈    时间: 2015-1-20 13:13
本帖最后由 传慈 于 2015-1-20 13:15 编辑

byte b3=(byte)(b1+b2);强转一下,从int转成byte
如果是int i=b1+b2;就不会报错。

作者: 探寻者    时间: 2015-1-20 21:16
huyang936 发表于 2015-1-19 22:47
谢谢回复 又问:
byte b1 = 1;
byte b1 = 2L;  //报错

类型时完全不同的啊,L是long类型的,byte类型的变量怎么能接受呢?
作者: outsider1020    时间: 2015-1-24 09:46
学习下。。。。。
作者: 梁小刀11    时间: 2015-1-25 23:40
b1 + b2在参与运算的时候,首先会转换为int类型,而左边是byte类型的变量接收,肯定就报错了。
如果是常量的话,会先计算,看计算结果是否在限定的类型范围,如果在则不报错,不在才报错。

大婶的回答.
作者: zw937820438    时间: 2015-1-26 00:14
其实只要是思路一样就没必要纠结那么多不然容易把自己绕糊涂




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2