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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

以下面一道题来说明我们经常遇到的基本类型转换:
以下代码哪个是正确的?为什么?
a. byte b = 1 + 1;   
b. byte b = 1; b = b + 1;
c. byte b = 1; b = b += 1;   
d. byte b = 1; b = ++b;
a正确, 因为在Java虚拟机中 会自动判断1+1是不是在byte的长度之内,如果在长度之内就不会报错,相反则报错。
b错误,b会自动类型提升为int类型,故b+1计算之后结果为int类型,而b是byte,类型不匹配。int不能自动向下转型为byte
c正确,首先会判断1是否在byte范围之内,在范围之内不会损失精度,所以答案正确;如果1替换成大于byte类型长度数字,会把这个数字强制转换成byte型的数字(会损失精度),这个数在和b相加,得到最后的结果,但是这样的结果是不正确的。
d正确,++计算结果是int类型,但是++b前面有一个隐式的(byte),将结果强制转换为byte类型,所以结果是正确的

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马