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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 怪学究 中级黑马   /  2015-4-27 23:36  /  4763 人查看  /  55 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

3、 以下代码哪个是正确的?为什么?

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;

55 个回复

倒序浏览
这道题选ACD
回复 使用道具 举报
acd是正确的.   b错是因为b=b+1,,后面的b是byte类型,但是和int类型的1运算,会自动提升成为int类型的,但是b是byte类型,int类型超出了范围
回复 使用道具 举报
acd正确,b错
回复 使用道具 举报
acd三个答案
回复 使用道具 举报
本帖最后由 893269222 于 2015-4-28 00:02 编辑

a正确,常量是不需要强制类型转换;
b错误,可能损失精度
c 正确,没搞懂,反正编译通过
回复 使用道具 举报
acd是对的。(a)相当于给b的初始值为2;( b) 在执行b+1的时候,b自动提升为int类型然后再+1,计算后的结果为int,必须执行强制类型转换为byte才行;(c、d) b+=1和++b中自带强制类型转换,所以计算后的类型还是byte
回复 使用道具 举报
b肯定错,感觉a也不对
回复 使用道具 举报
Cat 中级黑马 2015-4-28 09:27:23
9#
学习一下~
回复 使用道具 举报
acd   ok   
回复 使用道具 举报
嘛嘛咪阿 发表于 2015-4-27 23:53
acd是正确的.   b错是因为b=b+1,,后面的b是byte类型,但是和int类型的1运算,会自动提升成为int类型的,但是b ...

终于是明白了
回复 使用道具 举报
数据的转换确实很烦人啊
回复 使用道具 举报
受教了!
回复 使用道具 举报
看着挺简单,实则不简单
回复 使用道具 举报
答错了。。。
回复 使用道具 举报
ACD是正确的,涉及到了自动提升,请问一下这是面试题吗?
回复 使用道具 举报
acd  a是两个常量相加结果在byte范围内,赋值给b。b是先提升int类型再相加。c中 += 隐含强制转换,d和a
回复 使用道具 举报
ji chu ce shi yi da
回复 使用道具 举报
晕,这样的题,我不会,看起来简单,实际不简单呀。
回复 使用道具 举报
893269222 发表于 2015-4-27 23:58
a正确,常量是不需要强制类型转换;
b错误,可能损失精度
c 正确,没搞懂,反正编译通过

+=会自动完成类型转化
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马