对于short s1 = 2; s1 = s1 + 2; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 2; s1 += 2;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
PS:数据类型的转换
java的数据类型在定义时已经确定了,因此不能随意转换成其他类型的数据类型,但java允许用户有限度的做类型转换处理。
java会在下列条件都成立时,自动做数据转换类型
1 转换前的数据类型与转换后的类型兼容
2 转换后的数据类型的表示范围比转换前的类型大 |