float f = 3.4; 有错吗? 有错,因为浮点类型默认是double类型,double类型赋值给float类型是大类型赋值给小类型需要进行强转,可在3.4前加(float)进行强转,或者在声明的时候就定义为float类型即在3.4后加f或F。
short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 前面有错,后面没错,整型赋值只要值在数据类型范围之内就可以赋值成功,但是进行运算时候会转换成int再运算,所以short类型s1会自动类型转换成int进行运算,结果是int类型但是要赋值给short类型,所以会错误,需要进行强制转换。扩展赋值运算符隐含进行了强转操作,所以正确。