黑马程序员技术交流社区

标题: 关于byte字节的问题。 [打印本页]

作者: 寻找资拥。    时间: 2013-11-13 16:28
标题: 关于byte字节的问题。
byte a=1;
byte b=2;

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

有没有谁给我详细的解释说明,我知道这样是错的,但是我不知道这样为什么是错的。。
作者: 文涛    时间: 2013-11-13 17:01
首先你要明白,+这种运算,需要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的,这样丢失精度是危险的。

作者: 黄炳期    时间: 2013-11-13 18:11
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html




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