1.自动类型转换
- 当表数范围小的数据类型的变量与表数范围大的数据类型的变量做运算时,结果自动转换为表数范围大的数据类型。(表数范围:一个数据类型所能表示数的范围)
byte、char、short --> int --> long --> float --> double - 当byte、char、short三种类型的变量做运算(也包括自己和自己做运算)时,结果为 int 型
public class Test { public static void main(String[] args) { char c1 = 'a'; // 97 char c2 = 'b'; // 98 int i = c1 + c2; System.out.println(i); // 195 } }
2.强制类型转换
自动类型转换的逆运算,需要使用强转符:(),可能会导致精度损失。
public class Test {
public static void main(String[] args) {
double d = 12.9;
int i = (int) d; // 截断操作
System.out.println(i); // 12
int i2 = 128;
byte b = (byte) i2;
/*
i2的二进制为:00000000 00000000 00000000 10000000(补码)
截取后8位给b,所以 b 的二进制为:10000000(补码),所以 b 的十进制为-128
*/
System.out.println(b); // -128
}
}