必要时,Java 会将一种数据类型自动转换成另一种类型。例如,假设我们把一个整数赋值给 float 类型的变量,Java 会将 int 类型自动转换成 float 类型。我们也可以在程序中,进行强制类型转换。
public class TypeCast {
public static void main(String[] args) {
//自动转换
float f = 1L;
System.out.println(f);
/**
* 强制转换
*/
//向下转换
long l = 2000000000000000000L;
System.out.println("l:" + l);
int i = (int) l;
System.out.println("i:" + i);
//向上转换
int i2 = 100;
long l2 = (long) i2;
System.out.println("i2:" + i2);
System.out.println("l2:" + l2);
}
}
运行结果:
1.0
l:2000000000000000000
i:1321730048
i2:100
l2:100
- 第一个示例是自动转换,可以看到当把 long 长整型数值赋值给 float 类型的变量时,实际上已经自动发生类型转换咯(即从 long 转换为 float)。
- 显式类型转换分为两种,向上与向下类型转换。
【1】向上类型转换指的是,把较小类型的数据转换为较大类型的数据,比如示例中的 int 转换为 long。
【2】向下类型转换指的是,把较大类型的数据转换为较小类型的数据,比如示例中的 long 转换为 int,这种转换会丢失部分数据。