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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈君 金牌黑马   /  2014-8-20 18:17  /  1101 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈君 于 2014-8-22 16:20 编辑

byte b = 1 + 1;  byte b = 1; b = b + 1;
上面的两行代码,第一行是对的,第二行是错的。
首先我知道第二行错误的原因是执行计算的时候b会自动转换成int型但是b是byte类型所以错了。只要b =(byte) b + 1;这样就正确了
但是那为什么第一行会错呢?1+1不是在执行运算嘛,不是应该结果是int型嘛?如果是说虚拟机自动执行了类型转换的话,那为什么
b = b + 1不执行类型转换呢?

点评

共同努力学习!  发表于 2014-8-22 21:07
http://bbs.itheima.com/thread-127149-1-1.html  发表于 2014-8-20 18:30

6 个回复

倒序浏览
这个视频有提到。b=b+1;在编译阶段,b作为变量,可能取很大的值,那样就超过了取值范围,所以会报错。走不到虚拟机那步。
回复 使用道具 举报
b=b+1;在编译阶段,b作为变量,可能取很大的值,那样就可能超过了取值范围,所以会报错。走不到虚拟机那步。
回复 使用道具 举报
付剑翊 来自手机 中级黑马 2014-8-22 16:28:37
板凳
b=1+1;结果在byte范围内不会报错吧?
回复 使用道具 举报
b是变量,因为是变量代表这个数可变,如果b是数据类型的最大值,加一就会超出存储空间了,常量就不会,因为数值不会变
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马