一、自动类型转换
范围小的可以自动转换为范围大的。
->后边的类型可自动转换为前面的类型:
byte->short->int->long->float->double
char->int->long->float->double
byte和short如果赋值时赋在byte和short所能表示范围内的int型的数,也会自动转换为byte或short。
二、强制类型转换
把范围大的转换为范围小的,格式为:
double a = 3;
float b = (float)a;
以上给a赋的值为int型。
需要注意,强转会损失精度,损失的精度相当于溢出,即将范围外的高位去掉再按补码计算。
三、表达式类型的自动提升
byte a = 1;
a = a + 1; //错误的
在一个表达式中,会将整个表达式的类型提升为范围最大的类型,因此a+1的类型为int。