在隐含的类型转换过程中有一些小细节很多同学容易忽略。
例如有如下小程序:
short s1=1;s1=s1+1;
对于s1+1;在这个过程中会自动的提升表达式的类型,所以结果是int类型的,当将int类型的结果赋值给short类型时编译器就会报告强制类型转换错误。
但是对于下面的情况就不会出现编译错误。
short s1=1;s1+=1;
对于s1+=1,java在编译过程中会进行特殊处理,因此可以编译通过。
以上两个例子虽然看起来执行的功能相同但是在一些不太引人注意的细节上还有很大差别。