自动类型转换、强制类型转换
...小于 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);
其中有隐含的强制类型转换。