| 本帖最后由 ζ_____________ 于 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自身的自增, 不涉及到类型提升.
 
 
 
 |