Java 类型转换
Java 是强类型语言,不同类型之间转换需遵循特定规则。
自动类型转换(隐式)
从小类型到大类型自动转换,无需额外代码。
Java
int i = 100;
long l = i; // int → long,自动转换
double d = i; // int → double,自动转换
// 转换顺序:byte → short → int → long → float → double
// char → int → long → float → double
强制类型转换(显式)
从大类型到小类型需强制转换,可能丢失精度。
Java
double d = 3.14;
int i = (int) d; // 强制转换,i = 3
long l = 1000L;
int j = (int) l; // 强制转换
精度丢失示例
Java
int i = 300;
byte b = (byte) i; // b = 44,溢出截断
double d = 9.99;
int n = (int) d; // n = 9,小数丢失
表达式类型提升
混合运算时,结果自动提升为较大类型。
Java
byte a = 10;
int b = 20;
long c = 30L;
long result = a + b + c; // 结果为 long 类型
byte、short、char 在运算时自动提升为 int。
常见问题
Java
int a = 10;
int b = 3;
double result = a / b; // result = 3.0,整数除法
double result2 = a * 1.0 / b; // result2 = 3.333...,正确做法
要点总结
- 小类型→大类型:自动转换
- 大类型→小类型:强制转换,可能丢失精度
- 运算时类型自动提升
📝 发现内容有误?点击此处直接编辑