### 强制类型转换

当把高级别（即占用存储空间较大）的数据类型赋值给低级别（即占用存储空间较小）的数据类型时，必须进行的强制类型转换。其语法格式如下：

(类型)(表达式)

类型是要转换成的目标类型，例如 int、short、double 等。表达式是要转换的目标数据，它可以是任何基本类型的算术运算表达式。

例如：

long num=900L; // 900

short snum=(short)num; // 900

long 类型的数值 900 没有超过 short 类型的取值范围，所以 short 类型的变量“snum”完全容纳了强制类型转换后的数值。

基本数据类型的强制类型转换需要注意数据完整性的问题，当把高级的数据类型强制转换为低级的数据类型时，如果数值超出低级数据类型的取值范围，数值将被截取，导致数据丢失、不完整。

例如：

short snum=516; // 516

byte bnum=(byte)snum; // 4

snum 是 short 类型，数据长度是 16 位，而 bnum 是 byte 类型，长度为 8 位。当 snum 强制转换为 byte 类型时，数值“516”超出了 byte 类型的取值范围，这是只能从 short 类型截取低 8 为的数据赋值给 byte 类型的 bnum 变量。如图 1 所示。

图 1 short 转换为 byte 时必须截取数据

这样就造成了数据丢失，所以在使用强制数据类型转换时，一定要倍加小心。

注意：boolean布尔型的数值不能被牵制类型转换为其他数据类型，反之亦然。

例 将 long 类型数值强制类型转换为其他数据类型

public class PConversion {

public static void main(String[] args) {

long num=33333;

System.out.println("原数是："+num);

System.out.println("转成 int："+(int)num);

System.out.println("转成 short："+(short)num);

System.out.println("转成 byte："+(byte)num);

System.out.println("转成 float："+(float)num);

System.out.println("转成 char："+(char)num);

}

}

实例运行结果如图 2 所示。

图 2 实例运行结果