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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hongyu2017 中级黑马   /  2017-5-6 17:27  /  1526 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

byte b1=1;
byte b2=2;
byte b3=b1+b2;为什么这句有错误啊,b1 和 b2都是byte型,按理说byte+byte可以是byte啊,为什么不行?谁来给我解释一下啊。

7 个回复

倒序浏览
改成int b3=b1+b2;就行了,为什么byte+byte=int?
回复 使用道具 举报
给你说的简单点吧,bye类型的数据在进行运算时,比如加减乘除,会自动转换成int类型的来操作,运行后,结果是int型的,由int类型转换成byte类型时,肯定会有错误
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
楼主是这样的,在基本数据类型里这属于隐式类型转换,也是属于面试题里常问的,今天我面试老师就问我了。原因是java中,基本数据类型里byte型变量和short型变量在进行运算时,由于jvm在编译的时候是不知道变量的具体值的,所以它发现参加运算的如果是byte或者short,都会自动将类型提升成int来运算,因此它们运算得到结果也是int类型的,你用一个byte或者short类型的变量来接收一个int类型的运算结果,会给你报错。
来自宇宙超级黑马专属安卓客户端来自宇宙超级黑马专属安卓客户端
回复 使用道具 举报
因为整形默认为int类型!!b2-b3默认是两个int类型的变量相加!隐式转换为byte!大转小可能损失精度!所以报错
来自宇宙超级黑马专属苹果客户端来自宇宙超级黑马专属苹果客户端
回复 使用道具 举报
b1和b2是变量,在进行加法运算的时候就变成了默认的int类型的,如果是1和2相加就是byte类型
回复 使用道具 举报
byte b3= (byte) b1+b2
向下强转。。
回复 使用道具 举报
学习了啊啊啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马