当Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型。
数据类型按精度大小排序:
1.char -> int -> long -> float -> double
2.byte -> short -> int -> long -> float -> double.
例如:
int a = 'c';
double d = 80;
自动类型转换注意事项和细节:
1.有多种类型数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后进行计算。
例如:
int n1 = 5; float n2 = n1 + 1.1;
这样显而是错误的,因为在Java中,小数默认为double类型,而float类型的正确表达方式为(1.1f)或者(1.1F)。上述代码中的1.1是double型,其表达式结果为double型,而double型是高精度浮点型,它的精度比float高,所以在编译时会报错。
解决方法:
//方法一 float n2 = n1 + 1.1F; //方法二 double n2 = n1 + 1.1;
2.当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
3.(byte、short)和char之间不会进行相互自动转换。
4.byte、short、char 他们三者可以计算,在计算时首先转换为int类型。
5.boolean不参与转换。
6.自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型。



