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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

        byte b1 = 3, b2 = 4, b;
        b=b1+b2;
        b=3+4;

6 个回复

倒序浏览
第二句
  1. b=b1+b2;
复制代码

因为b1是byte型,b2是byte型
b1+b2默认会自动强转成int型
而赋值给b的时候,b为byte型
所以会编译失败!
回复 使用道具 举报
b=b1+b2,编译器会自动将b1和b2自动提升为int型的,而b是byte的,所以会报错;而b=3+4,是一个赋值语句,b是byte型的,3+4=7属于byte数值类,所以b=3+7是没问题的
回复 使用道具 举报
b=3+4
肯定错。
3和4是 int类型 相加后得到 int类型的 7
把int类型赋值给一个byte肯定错。
上边的是对的。
回复 使用道具 举报
二楼说错了,第2句都没错,2边都是byte型,是可以赋值的。

b=3+4;
这句话是错的,b是byte型,3和4默认为int型,int型不能赋值给byte型的b。
回复 使用道具 举报
本帖最后由 曲终烟尽 于 2015-7-10 21:51 编辑

b=b1+b2;编译失败
错误: 不兼容的类型: 从int转换到byte可能会有损失
我思考了一下,编译失败是因为右侧两个byte相加,其值将大于一个byte所能表达的最大值,所以会自动将右侧的和升级为一个int,而左侧还是byte,就会造成把int赋值给byte的错误。

b=3+4;可以通过
但是如果右侧值大于127就会自动升级为int类型。

回复 使用道具 举报
  b=b1+b2;报错,Java做运算会默认转换为int型
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马