3.9.2 强制转换不兼容的类型
尽管自动类型转换很有帮助,但是它们不能完全满足全部需要。例如,如果希望将int类型的值赋给byte变量,会发生什么情况呢?不会自动执行转换,因为byte比int更小。这种转换有时被称为缩小转换(narrowing conversion),因为是显式地使数值变得更小以适应目标类型。
为了实现两种不兼容类型之间的转换,必须使用强制类型转换。强制类型转换只不过是一种显式类型转换,它的一般形式如下所示:
其中,target-type指定了期望将特定值转换成哪种类型。例如,下面的代码片段将int类型的值强制转换为byte类型。如果整数的值超出了byte类型的范围,结果将以byte类型的范围为模(用整数除以byte范围后的余数)减少。
- (target-type) value
当将浮点值赋给整数类型时会发生另一种不同类型的转换:截尾(truncation)。您知道,整数没有小数部分。因此,当将浮点值赋给整数类型时,小数部分会丢失。例如,如果将数值1.23赋给一个整数,结果值为1,0.23将被截去。当然,如果整数部分的数值太大,以至于无法保存到目标整数类型中,那么数值将以目标类型的范围为模减少。
下面的程序演示了一些需要进行强制类型转换的转换:
|
这个程序产生的输出如下所示: