Java 中的 8 种基本数据类型在一定条件下可相互转换,分为自动转换和强制转换。

自动类型转换
范围小的类型可自动转换为范围大的类型,例如:

java
int a = 100;
long b = a; // 自动转换

double d = 3.14;
float f = (float) d; // 需强制转换
注意数值溢出:

java
int x = 1_000_000_000;
int y = 2_000_000_000;
long sum = (long) x + y; // 先转型再计算,避免溢出
强制类型转换
将范围大的类型转换为范围小的类型时,需显式强制转换,可能丢失精度或溢出。

java
double pi = 3.14159;
int intPi = (int) pi; // 结果为 3

int big = 300;
byte small = (byte) big; // 溢出,结果不可预期
类型提升
在表达式中,所有操作数会自动提升为范围最大的类型:

java
long count = 1000L;
int price = 50;
long total = price * count; // price 自动提升为 long
建议
进行算术运算时注意类型范围,防止溢出。

强制转换前确保值在目标类型范围内。

使用 Math 类方法进行安全的数值处理。

switch 支持的数据类型
switch 语句在 Java 中可用于多种类型的条件匹配,不同版本支持的类型有所扩展。

支持的数据类型
基本类型:byte、short、char、int

包装类型:Byte、Short、Character、Integer

枚举类型:Enum

字符串类型:String(JDK 7+)

示例
java
// 包装类型
Integer code = 200;
switch (code) {
case 200:
System.out.println(“成功”);
break;
case 404:
System.out.println(“未找到”);
break;
}

// 枚举类型
enum Status { NEW, PROCESSING, DONE }
Status s = Status.PROCESSING;
switch (s) {
case NEW:
break;
case PROCESSING:
break;
case DONE:
break;
}
注意事项
case 标签必须是常量或字面量。

每个 case 应包含 break 防止穿透。

default 分支可选,最多一个。

JDK 12+ 支持更简洁的语法(case 1, 2 -> …)。