变量之间的转换规则
布尔型变量在和其他 7 种基本数据类型做运算时,无法转化为其他的数据类型,所以下面所说的运算都是除了布尔型的其他 7 种基本数据类型之间的转换。
1、自动类型提升
byte b1 = 1;
int i1 = 2;
b1 + i1 运算后的结果应该是什么类型的呢?
我们都知道计算机底层是二进制数,所以转化成二进制计算:
byte 类型的变量在内存中占 1 个字节,而 int 类型的变量在内存中占 4 个字节。所以运算结果肯定是 4 个字节的 int 类型呀。
7 中基本数据类型自动类型提升的规则:
byte、char、short -> int -> long -> float -> double
byte、char、short、int 类型的变量之间做运算时,byte、char、short 类型的变量的变量类型会自动提升为 int。
2、强制类型转换
强制类型转换是自动类型提升的逆运算。
原变量类型 变量名 = (强转后的变量类型)变量名/变量值
要小心使用强制类型转换,强制类型转换可能会造成变量精度损失。
比如将 double 类型变量转化为 int 类型变量:
int i1 = (int) 11.7;
System.out.println(i1); // 11
控制台会输出 11,使用强制类型转换,损失了小数点后面的值。