数值类型自动转换
在Java编程中,我们通常会遇到两种类型转换。
第一种是数值类型的转换:
我们在编程中经常需要将一种数值类型转换为另外一种数值类型。
数值类型的转换也分为两种,第一种就有系统默认的类型转换,在进行转换时可能会发生精度上的损失。例如我们有一个int类型赋值为123456789,它所包含的位数比float类型所能够表示的位数多。当将这个整型数值转换为float类型的时候,将会得到同样大小的结果,但却失去了一定的精度。
public class No1 {
public static void main(String[] args) {
int n = 123456789;
float f = n;
System.out.println("n= " + n + " f= " + f);
System.out.println("n+f= " + n + f);
}
}
当使用上面两个数值进行二元操作时(例如:n+f,n是整数,f是浮点数),先要将两个操作数转换为同一种类型,然后再进行计算。
- 如果两个操作数中有一个是double类型,另外一个操作数就会转换为double类型。
- 如果其中一个操作数是float类型,另外一个操作数将会转换为float类型。
- 如果其中一个操作数是long类型,另外一个操作数将会转换为long类型。
- 否则,两个操作数都将被转换为int类型。