黑马程序员技术交流社区

标题: byte b = 10; b++; b = b + 1; 问哪句会报错,为什么 [打印本页]

作者: 739994889    时间: 2015-8-22 22:01
标题: byte b = 10; b++; b = b + 1; 问哪句会报错,为什么


求答案  

作者: 3174918418    时间: 2015-8-22 22:17
本帖最后由 3174918418 于 2015-8-22 22:22 编辑

b = b + 1;


作者: kuikui    时间: 2015-8-22 22:23
b = b + 1报错,b+1的b会主动提升为int类型
作者: 后营男孩    时间: 2015-8-22 22:26
后者报错~~~~~
作者: pengbeilin    时间: 2015-8-22 22:40
eclipse给了一个这样的答案:b = (byte) ( b + (byte)1);  
分析一下啊

byte b = 10; //这句没问题的 变量初始化

b++;


b(1) = b(2) + 1;//这句这里的b(1)是byte类型的,b(2)是一个byte,1默认是一个int
//而外面又要强转的原因就是
(那么b= b1 + b2;怎么又会编译出错呢,而且 b1,b2都是byte型的,这里java又有自己的一个机制,就是防止两个小数相加超出自己所表示的范围,把b1 ,b2变成 int 在相加 )
作者: 739994889    时间: 2015-8-23 22:00
Thank you  
作者: 亦如梦幻泡影    时间: 2015-8-23 22:28
b= b+1会报错  在进行计算时会默认自动转型  int类型的是四个字节 byte是一个字节  会报可能损失精度的错误
作者: 寒星在天    时间: 2015-8-23 22:38
水的一手好贴啊
作者: G_Y_C黑马    时间: 2015-8-23 23:05
技术分挺高啊
作者: 流觞曲水    时间: 2015-8-23 23:08
b=b+1这句会报错
作者: 流觞曲水    时间: 2015-8-23 23:12
b=b+1会报错;因为b+1中的b为byte型,在将b+1的值赋给b前(b+1)的b会提升为int型。编译时会出现丢失精度的问题
作者: taoaisheng    时间: 2015-8-24 15:35
b = b + 1 ;这句会报错   b+1为byte型加int型,结果默认为是int型,int型转成byte型需要进行强转。因此该句会报错。




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