黑马程序员技术交流社区

标题: 这个题该怎么回答? [打印本页]

作者: 毅心缘    时间: 2014-6-5 20:17
标题: 这个题该怎么回答?
以下代码哪个是正确的?为什么?

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;
作者: 赵文豪    时间: 2014-6-5 20:30
感觉选C,其他三项等号右边算出的结果都会自动升级成int型,而等号左边b是byte类型,int占4个字节,byte占1个字节,需要强制类型转换才可,求指正哈
作者: love~陌    时间: 2014-6-5 20:40
少侠,答案是acd,老夫的答案必须是正确的
作者: love~陌    时间: 2014-6-5 20:42
在A中,JVM看到等号右边,直接判断,在byte范围内,不会报错;b在编译时报错:可能损失精度;c中表达式只做了一次运算,JVM自己内部做类型转换;d跟c情况类似
作者: 九号球    时间: 2014-6-5 20:44
如果类型不变的话应该是a 吧
作者: 赵洋洋    时间: 2014-6-5 21:04
a是对的
作者: Boiled_Water    时间: 2014-6-5 21:15
http://bbs.itheima.com/thread-121036-1-1.html【测试】几行代码测试你对赋值语句的了解
作者: blackstones1    时间: 2014-6-5 21:15
学习下{:3_59:}
作者: 志ぁ才☆博ぁ成    时间: 2014-6-5 21:20
a和c是正确的
作者: 毅心缘    时间: 2014-6-5 23:32
love~陌 发表于 2014-6-5 20:40
少侠,答案是acd,老夫的答案必须是正确的

前辈。能否给个详细的解释啊?
作者: love~陌    时间: 2014-6-6 07:40
毅心缘 发表于 2014-6-5 23:32
前辈。能否给个详细的解释啊?

哎,下面不是给了详细解答了么,少侠要有耐性地向下翻下去就能看到我的详细解释
作者: 杨胜男    时间: 2014-6-6 08:01
a,c,d正确

b代码:byte b = 1; b = b + 1;
b是byte型的。b = b + 1中1是int型的,需要强转,即b=(byte)(b+1);不然损失精度
作者: 790324255a    时间: 2014-6-6 08:16
已有帖子说明了




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