初看这道题感觉没什么 但其实考察了很多细小的,有关数据类型转换的点,我们下面来详细剖析下!
首先我们来看 short s1 = 1; s1 = s1 + 1;有什么错?
当我们把代码敲出来
short s1 =1;
s1 = s1+1;
会出现如下情景
无法将int类型转换为short类型
我们知道 short 与int 类型 所占的空间不同,int类型所占的空间大于short ,,因为害怕因为大转小,导致数据丢失,这就导致 int转short 必须强制转换!
我们再来看第二个问题 :short s1 = 1; s1 += 1;有什么错?
很多人认为 s1 += 1 等价于 s1 = s1+1 其实不是的,根据查找的java规范
a+=b 实际上是 (T1) a=(T1)(a+b)
那么 我们的 short s1 = 1; s1 += 1; 实际上是 s1 = (short) (s1 + 1)
java 编译器对它特殊处理了