日期:2014-05-20  浏览次数:20693 次

关于转换的初级问题
short a=1;
  a=a+1;
时会出现损失精度的错误,但a+=1就不会,哪位给俺解释一下他们的区别呗,同学给我说的是地址引用的原因但 我还是不太明白,请详细的说一下呗

------解决方案--------------------
Java code
short a=1; 
        a=a+1;

------解决方案--------------------
假如表达式是 E1 op= E2 这种样子的(op是运算符,E1、E2是操作数),
实际上内部是这样做的 E1 = (T)((E1) op (E2)),其中 T 表示 E1 的类型。

比如:
short x = 3;
x += 4.6;

内部是这样工作的:
short x = 3;
x = (short)(x + 4.6);

这里面还有很多细节问题,具体详见 Java Language Specification §15.26.2
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.26.2