- 自动类型提升
- 当容量小的数据类型的变量与容量大的数据类型的变量做运算时,结果自动提升为容量大的数据类型。
- 七种数据类型的容量大小顺序为:byte、char、short -> int -> long -> float ->double;其中,byte、char、short三种类型变量做运算时,结果为int型。
- 强制类型转换
- 自动类型提升的逆运算。
- 需要使用强转符号:()
- 强转可能导致精度损失,当大容量向小容量强转的某些情况下。
double d=1.9; int i=(int)d; System.out.println(i); //输出为1,存在精度损失
- 特殊情况
整型常量,默认类型为int型;浮点型常量,默认类型为double型。
long l1 = 123123; //编译成功
long l2 = 123123123123123; //编译失败,数太大了
long l3 = 123123123123123L; //编译成功
float f1 = 1.2; //编译失败,因为double的容量大于float
float f2 = (float)1.2; //编译成功
byte b = 12;
byte b1 = b + 1; //编译失败
float f3 = b + 1.2; //编译失败