黑马程序员技术交流社区

标题: 有一个基础测试题虽然知道答案可是还是不太明白求指点 [打印本页]

作者: 王超群    时间: 2015-6-9 22:45
标题: 有一个基础测试题虽然知道答案可是还是不太明白求指点
4、 以下代码哪个是正确的?为什么?

a. byte b = 1 + 1; 正确 。因为右边是两个常量相加,它会判断是否在byte的取值范围里,
如果在,就输出,如果超出byte的取值范围就会报错。      
b. byte b = 1; b = b + 1; 错误 。因为b+1的结果默认转换为int型,int型不能直接转换为byte型,需强制转换。
应改为:byte b=1;b=(byte)(b+1);
c. byte b = 1; b = b += 1; 正确 。因为b+=1是一次运算,包含了一个隐藏的类型转换,相当于 b=(byte)(b+1);
d. byte b = 1; b = ++b;正确。因为b=++b是一次运算,也包含了一个隐藏的类型转换
c和d有区别吗?在哪里?
作者: shuaiqi_P_D    时间: 2015-6-9 22:48
结果一样,不过编译的过程是不一样的
作者: 王超群    时间: 2015-6-9 22:51
shuaiqi_P_D 发表于 2015-6-9 22:48
结果一样,不过编译的过程是不一样的

我想问一下他们中间的编译过程是什么样的啊,是包含一个隐式的强制转换吗?




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