黑马程序员技术交流社区

标题: 关于byte,我有问题 [打印本页]

作者: hongyu2017    时间: 2017-5-6 17:27
标题: 关于byte,我有问题
byte b1=1;
byte b2=2;
byte b3=b1+b2;为什么这句有错误啊,b1 和 b2都是byte型,按理说byte+byte可以是byte啊,为什么不行?谁来给我解释一下啊。

作者: hongyu2017    时间: 2017-5-6 17:29
改成int b3=b1+b2;就行了,为什么byte+byte=int?
作者: fly2017    时间: 2017-5-6 17:37
给你说的简单点吧,bye类型的数据在进行运算时,比如加减乘除,会自动转换成int类型的来操作,运行后,结果是int型的,由int类型转换成byte类型时,肯定会有错误

作者: zeng1002    时间: 2017-5-6 20:34
楼主是这样的,在基本数据类型里这属于隐式类型转换,也是属于面试题里常问的,今天我面试老师就问我了。原因是java中,基本数据类型里byte型变量和short型变量在进行运算时,由于jvm在编译的时候是不知道变量的具体值的,所以它发现参加运算的如果是byte或者short,都会自动将类型提升成int来运算,因此它们运算得到结果也是int类型的,你用一个byte或者short类型的变量来接收一个int类型的运算结果,会给你报错。

作者: jkdlxl584    时间: 2017-5-6 20:48
因为整形默认为int类型!!b2-b3默认是两个int类型的变量相加!隐式转换为byte!大转小可能损失精度!所以报错

作者: 風中雨来    时间: 2017-5-6 21:18
b1和b2是变量,在进行加法运算的时候就变成了默认的int类型的,如果是1和2相加就是byte类型
作者: liximing2017    时间: 2017-5-7 01:12
byte b3= (byte) b1+b2
向下强转。。
作者: 654788808    时间: 2017-5-7 08:17
学习了啊啊啊




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