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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 寻找资拥。 中级黑马   /  2013-11-13 16:28  /  1303 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

byte a=1;
byte b=2;

a=a+b;//报错,为什么。

有没有谁给我详细的解释说明,我知道这样是错的,但是我不知道这样为什么是错的。。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

2 个回复

倒序浏览
首先你要明白,+这种运算,需要int类型的数据才可以进行,也就是说byte数据进行该运算的时候,会被编译器自动转换为int,那么也就是说,你将a+b这个int数据赋值给了a这个byte变量,我们知道int是四个字节而byte只有一个,这样会造成精度丢失,所以,编译器不允许这样做。
      但是如果这样做是可以的
final byte a=1;
final byte b=2;
byte c;
       c=a+b;
这样编译器知道a,b的值固定为1,2那么他们的和就一定是3,所以编译器知道将3这个int转换为byte不会丢失精度,所以就可以。
    总之,int一般情况是不能直接转换为byte的,这样丢失精度是危险的。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马