s+=4与s=s+4的区别:
1. s+=4 (在内存中的形式是:s=(short)(s+4))
+=赋值运算符
他是一次运算(底层有一个自动转换过程)
2. s=s+4
它是两次运算
右边的值不确定,无法做检查(因为右边的是变量不是常量)它不做底层转换
两者的区别:
一个编译通过,一个编译失败
失败的原因:是因为它进行了自动类型的提升,类型已经不能再赋给低值类型,
因为会出现精度丢失
成功的原因:在赋值过程中。底层做了强制转换动作(这个动作是自动完成的,
是赋值运算所具备的特点)