当把高级别(即占用存储空间较大)的数据类型赋值给低级别(即占用存储空间较小)的数据类型时,必须进行的强制类型转换。其语法格式如下:
(类型)(表达式)
类型是要转换成的目标类型,例如int、short、double等。表达式是要转换的目标数据,它可以是任何基本类型的算术运算表达式。
例如:
long num=
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类型时,数值“
图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 实例运行结果