首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

short a = 1;当执行a += 2;时,为什么不会提示精度损失?解决办法

2012-02-11 
short a 1当执行a + 2时,为什么不会提示精度损失?我知道精度损失错误的出现是因为:非强制性,将一个“

short a = 1;当执行a += 2;时,为什么不会提示精度损失?
我知道精度损失错误的出现是因为:非强制性,将一个“高精度”的值,赋值给一个“低精度”的变量。

以下我列出了4种情况:
(有精度损失错误,我简写为‘有’,否则写‘无)
情况1:
short a = 1;
a = a + 2;//有

情况2:
short a = 1;
short b = a + 1;//有

情况3:
short a = 1;
a += 2;//无

情况4:
short a = 2 + 1;//无

[解决办法]
short a = 1;
a += 2;//无
等同于
short a = 1;
a = (short)(a+2);
即跟你的情况4是等同的

[解决办法]

探讨
引用:

short a = 2 + 1;//无,这个是初始赋值,表达式里面全是字面常量值,就会把它当做short类型来赋值,
但是当short a = b+ 1 (b为一个short时),这时就会多一个表达式类型的提升的情况,b 为short ,1为INT,结果为 b+1 为INT 类型, int ---》short 这时就需要强制类型的转换了。

……

热点排行