黑马程序员技术交流社区

标题: 下面那个会编译失败 [打印本页]

作者: q953655369    时间: 2015-7-7 23:44
标题: 下面那个会编译失败
                byte b1=3,b2=4,b;
                b=b1+b2;
                b=3+4;
                哪句是编译失败的呢?为什么呢?  
作者: 杨基米德    时间: 2015-7-8 06:52
b=b1+b2会编译失败~b1,b2被隐式转换成int 所以需要int类型的变量来接收~
作者: 人造番茄    时间: 2015-7-8 07:01
b=b1+b2; 因为在加法计算时会被转换成int型进行计算,但是b却是byte型,所以编译失败
作者: icichacici    时间: 2015-7-8 07:01
b=b1+b2;//这句会发生错误,因为不能从int转换成byte
应改为
b=(byte)(b1+b2);
作者: wing-SF    时间: 2015-7-8 07:14
俩个byte类型相加,结果怎么会变整形啊,不解。。。。。是由于加法导致的么?

作者: wing-SF    时间: 2015-7-8 07:20
好吧,又涨知识了,在java中,类型为byte,short,char类型的变量在运算的时候会自动转为int类型。第三行b=3+4,如果换成b=127+1也会报错的。
作者: Love丶cd    时间: 2015-7-8 08:09
  b=b1+b2;这句会编译失败,因为在程序中,byte类型一旦赋值后会被自动转换为int型,b1+b2为int型,自然编译失败。应该改为b=(byte)(b1+b2)。这是类型转换问题,尤其要注意了
作者: 紫夜灵魂    时间: 2015-7-8 08:33
给变量赋值后才会转换成int吖吖  原本以为 纯数字才会被认为是int
作者: fmi110    时间: 2015-7-8 08:35
本帖最后由 fmi110 于 2015-7-8 08:37 编辑

学习一下 一直以为纯数字是int
作者: liuch111    时间: 2015-7-8 09:53
涨姿势                                    
作者: 慕容旺财    时间: 2015-7-8 09:59
学习!我还没看出来!
作者: 帅帅loyal    时间: 2015-7-8 10:54
大家回答的都好详细,我都不知道该说什么了




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