对于s1=s1+1来说,java在编译时会将s1+1自动转为int类型,那么表达式相当于 short = int ,int的范围>short,会发生类型转换错误,而+= 是java自带的运算符,等价于 short = (short)s1+1,自带强制转换,因此不会出错,此外,如果short s1= 1; short s2 = 1; short s3=s1+s2; 也会报错,因为在java中,精度小于int类型的在运算时会自动转成int,还是会发生类型转换错误。
对于s1=s1+1来说,java在编译时会将s1+1自动转为int类型,那么表达式相当于 short = int ,int的范围>short,会发生类型转换错误,而+= 是java自带的运算符,等价于 short = (short)s1+1,自带强制转换,因此不会出错,此外,如果short s1= 1; short s2 = 1; short s3=s1+s2; 也会报错,因为在java中,精度小于int类型的在运算时会自动转成int,还是会发生类型转换错误。