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; 作者: THE_FUTURE 时间: 2014-9-27 09:26
d。我去这都不会。作者: 海燕 时间: 2014-9-27 10:40
++b就相当于 b = (byte)(b+1)作者: ζ_____________ 时间: 2014-9-27 11:25 本帖最后由 ζ_____________ 于 2014-9-27 14:35 编辑
//类型转换的时候一定要注意默认的类型是什么样的. 比如说本题的1,虽然是个常量,但是它的默认类型是int. 也就是说占用4个字节.
//但是 变量b 为 byte型, 占用的是1个字节. 所以在赋值的时候一定要对值做强制转换.否则就会损失精度.
byte b = 1 + 1; //错, 因为没有做强制转换 1+1的时候两个1都是int的, byte = int.
byte b = 1; b = b + 1; //错 , 同样的 byte = int;
byte b = 1; b = b += 1; //正确 单看b +=1 是一个整体运算,在做这个整体运算的时候,虽然可以看做 b= b+1 但是他在执行的时候底层默认做了一个对右侧常量的判断,并且做了一个 (byte)的类型强制转换,所以右侧的b赋值完毕并且类型为byte,没有进行类型的提升.再将b += 1赋值给b 也是没问题的.
byte b = 1; b = ++b; //正确 , ++b ,是在byte自身的自增, 不涉及到类型提升.