自动类型转换、强制类型转换

tim-qtp...小于 1 分钟Java基础

当把一个范围较小的数值或变量赋给另外一个范围较大的变量时,会进行自动类型转换;反之,需要强制转换。

这就好像,小杯里的水倒进大杯没问题,但大杯的水倒进小杯就可能会溢出。

①、float f=3.4,对吗?

不正确。3.4 默认是双精度,将双精度赋值给浮点型属于下转型(down-casting,也称窄化)会造成精度丢失,因此需要强制类型转换float f =(float)3.4;或者写成float f =3.4F

②、short s1 = 1; s1 = s1 + 1;对吗?short s1 = 1; s1 += 1;对吗?

short s1 = 1; s1 = s1 + 1; 会编译出错,由于 1 是 int 类型,因此 s1+1 运算结果也是 int 型,需要强制转换类型才能赋值给 short 型。

short s1 = 1; s1 += 1;可以正确编译,因为 s1+= 1;相当于 s1 = (short(s1 + 1); 其中有隐含的强制类型转换。