数据类型的转换,分为自动转换和强制转换。
自动转换: 程序在执行过程中“悄然”进行的转换,不需要用户提前声明,一般是从位数低的类型向位数高的类型转换(低精度->高精度 转换)。
强制类型转换: 则必须在代码中声明,转换顺序不受限制(高精度 -> 低精度转换)。 PS:此种转换存在精度损失。
自动数据类型转换:
自动转换按从低精度到高精度的顺序转换。不同类型数据间的优先关系如下:
低--------------------------------------------->高
byte,short,char-> int -> long -> float -> double
强转: 需要在代码中声明
高--------------------------------------------->低
double->float -> long -> int -> byte,short,char
实例1:
public class Demo {
public static void main(String[] args){
int x; double y;
x = (int)34.56 + (int)11.2; // 丢失精度(强转)
y = (double)x + (double)10 + 1; // 提高精度(自动转换)
System.out.println("x=" + x);
System.out.println("y=" + y);
}
}
运行结果:
x=45
y=56.0
程序分析:
1、由于在 34.56 前有一个 int 的强制类型转化,所以 34.56 就变成了 34。同样 11.2 就变成了 11 了,所以 x 的结果就是 45。
2、在 x 前有一个 double 类型的强制转换,所以 x 的值变为 45.0,而 10 的前面也被强制成 double 类型,所以也变成 10.0,所以最后 y 的值变为 56。
备注:其中 (double)可声明也可不声明,因为是提高精度。
转载:https://blog.csdn.net/farsight1/article/details/80447658
https://blog.csdn.net/u011240877/article/details/47721135