黑马程序员技术交流社区
标题:
哪句是编译失败的?为什么?
[打印本页]
作者:
梦想起航
时间:
2015-7-10 20:41
标题:
哪句是编译失败的?为什么?
byte b1 = 3, b2 = 4, b;
b=b1+b2;
b=3+4;
作者:
孟卫严
时间:
2015-7-10 21:08
第二句
b=b1+b2;
复制代码
因为b1是byte型,b2是byte型
b1+b2默认会自动强转成int型
而赋值给b的时候,b为byte型
所以会编译失败!
作者:
为明天而奋斗
时间:
2015-7-10 21:17
b=b1+b2,编译器会自动将b1和b2自动提升为int型的,而b是byte的,所以会报错;而b=3+4,是一个赋值语句,b是byte型的,3+4=7属于byte数值类,所以b=3+7是没问题的
作者:
曲终烟尽
时间:
2015-7-10 21:19
b=3+4
肯定错。
3和4是 int类型 相加后得到 int类型的 7
把int类型赋值给一个byte肯定错。
上边的是对的。
作者:
ZhangHeng
时间:
2015-7-10 21:22
二楼说错了,第2句都没错,2边都是byte型,是可以赋值的。
b=3+4;
这句话是错的,b是byte型,3和4默认为int型,int型不能赋值给byte型的b。
作者:
曲终烟尽
时间:
2015-7-10 21:34
本帖最后由 曲终烟尽 于 2015-7-10 21:51 编辑
b=b1+b2;编译失败
错误: 不兼容的类型: 从int转换到byte可能会有损失
我思考了一下,编译失败是因为右侧两个byte相加,其值将大于一个byte所能表达的最大值,所以会自动将右侧的和升级为一个int,而左侧还是byte,就会造成把int赋值给byte的错误。
b=3+4;可以通过
但是如果右侧值大于127就会自动升级为int类型。
作者:
搁浅丶那份
时间:
2015-7-10 21:48
b=b1+b2;报错,Java做运算会默认转换为int型
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2