各位大神解释的太详细了,偶懂啦,
对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
并且因为表达式最终的类型是由最后一个运算符决定的,而复合赋值运算+=是不会改变最终结果的数据类型。
short s=3;
s+=1;
"+="为复合赋值运算符,运算后没有改变变量s的数据类型,它的类型仍为short,所以编译运行正确
而如果写成s=s+s;的话,编译失败就是因为+运算时把结果类型提升为了int的,而int类型的值是不能直接赋给short类型的s的。 |