现象:
public class Test{
public static void main(String[] args){
short a=1; //(1)
a=a+1;//(2)
a+=1;//(3)
}
}
对上述代码进行编译会发生一个很有趣的现象a=a+1报错了,这是为什么呢?
难道a=a+1和a+=1不一样?想到这儿那恭喜你答对了,其实a=a+1和a+=1还真不一样。
(1)1是整型,赋值给short不会报错和(3)其实是一个道理,因为在赋值的同时,底
层已经自动进行强转了,即a=+1相当于a=(short)a+1;而(2)没有进行强转,那当然要
报错啦!