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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 毅心缘 中级黑马   /  2014-6-5 20:17  /  1791 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

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;

13 个回复

倒序浏览
感觉选C,其他三项等号右边算出的结果都会自动升级成int型,而等号左边b是byte类型,int占4个字节,byte占1个字节,需要强制类型转换才可,求指正哈
回复 使用道具 举报
少侠,答案是acd,老夫的答案必须是正确的
回复 使用道具 举报
在A中,JVM看到等号右边,直接判断,在byte范围内,不会报错;b在编译时报错:可能损失精度;c中表达式只做了一次运算,JVM自己内部做类型转换;d跟c情况类似
回复 使用道具 举报
如果类型不变的话应该是a 吧
回复 使用道具 举报
a是对的
回复 使用道具 举报
http://bbs.itheima.com/thread-121036-1-1.html【测试】几行代码测试你对赋值语句的了解

点评

很清晰,解释的很全面  发表于 2014-6-6 08:04
回复 使用道具 举报
学习下{:3_59:}
回复 使用道具 举报
a和c是正确的
回复 使用道具 举报
love~陌 发表于 2014-6-5 20:40
少侠,答案是acd,老夫的答案必须是正确的

前辈。能否给个详细的解释啊?
回复 使用道具 举报
毅心缘 发表于 2014-6-5 23:32
前辈。能否给个详细的解释啊?

哎,下面不是给了详细解答了么,少侠要有耐性地向下翻下去就能看到我的详细解释
回复 使用道具 举报
a,c,d正确

b代码:byte b = 1; b = b + 1;
b是byte型的。b = b + 1中1是int型的,需要强转,即b=(byte)(b+1);不然损失精度
回复 使用道具 举报
已有帖子说明了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马