Java语言在涉及byte、short、和char类型的运算时,首先会把这些类型的变量强制转换为int类型,然后对int类型的值进行计算,最后得到的也是int类型的值。因此,如果把两个short类型的值相加,最后得到的结果是int类型;
如果把两个byte类型的值相加,最后也会得到一个int类型的值。
如果需要得到short类型的结果,就必须显示地把运算结果转换为short类型,例如对语句short s1=1;s1=s1+1;由于在运行时会首先将s1转换为int类型,因此s1+1的结果为int类型,这样编译器会报错,所以正确的做法应该short s1=1;s1=(short)(s1+1);
有一种例外的情况“+=”是Java中规定的运算法,Java编译器会对其进行特殊的处理,因此,语句short s1=1;s1+=1能够编译通过。