强转存在与父转子的时候,子转父不需要进行强转,如
Object o = "hello"; //String类是Object类的子类,无需进行强转
类型强转分为两种情况:
Ⅰ、向下转型:将父类对象引用转换为子类对象引用,简称父转子
Object obj = new Object();
String str = (String) obj;
Ⅱ、基本数据类型的转换:也称显示类型转换,当需要将较大的数据类型转换为较小的数据类型时(简称大转小),由于可能存在数据溢出的风险,Java不会自动进行这种转换,程序员必须明确地进行类型转换。需要注意的是,①在转换过程中可能会导致数据丢失,②当转换后值超出了目标类型的取值范围时,会造成数值溢出。
double d = 123.456;
int i = (int) d; // 显式类型转换,将double转换为int,小数部分会被截断
//i=123
当小转大(小数据类型转换为大数据类型)的时候,Java会自动进行(隐式类型转换),并且不会丢失任何信息。因为较大的数据类型有足够的空间来存储较小的数据类型的值。
int smallerInt = 123456789;
long largerLong = smallerInt; // 自动类型转换,无需显式转换
System.out.println(largerLong); // 输出:123456789