类型转换有关问题

类型转换问题为什么shorts11s1s1+1需要强制转换类型shorts11s1+1可以正确编译 [解决办法]因为第一

类型转换问题
为什么
    short   s1   =   1;   s1   =   s1   +   1;   需要强制转换类型
    short   s1   =   1;   s1   +=   1;可以正确编译


[解决办法]
因为第一句1是int
第二句+= 有重载,是内部实现的
[解决办法]
s1 += 1;是一种简写形式,他相当于的是 s1 = (short)(s1 + 1);
它们都会被编译器编译成如下指令:
iload_1 //局部变量入栈,这里就是s1
iconst_1 //常量1入栈
iadd
i2s //int转成short,实际上已经被隐式转换了
istore_1 //存入局部变量区