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

© 张盼 中级黑马   /  2014-6-15 21:58  /  1251 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张盼 于 2014-6-15 22:34 编辑

在数据类型中为什么会这样?


被注释掉的为什么可以运行?

搜狗截图20140615215411.png (9.44 KB, 下载次数: 24)

原代码

原代码

搜狗截图20140615215432.png (2.51 KB, 下载次数: 33)

错误提示

错误提示

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

5 个回复

倒序浏览
b =3 + 4 右边得到的int类型值7,在byte类型范围内,会转成byte类型数据,赋值给b。而b = b1 + b2 因为b1 ,b2是变量,大小是不能确定的,得到的结果有可能会超出byte类型的范围,所以编译会报错.j。java默认的数据类型是int,你把b的值改成int就不会出问题了。希望能帮到你。

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报 1 0
运算之后会变成提升为int 类型。你强转一下就可以了。
回复 使用道具 举报
byte类型在运算时会自动转化成int型,如果计算结果超出了byte的范围,则会失去精度
回复 使用道具 举报
alive 发表于 2014-6-15 22:08
b =3 + 4 右边得到的int类型值7,在byte类型范围内,会转成byte类型数据,赋值给b。而b = b1 + b2 因为b1  ...

明白了,谢谢
回复 使用道具 举报
围观下,看看高手们怎么回答的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马