在 Java 中,switch 语句(或 switch 表达式)并不是所有类型都能用,它有明确的适用范围(支持的类型)和版本限制。下面按 Java 版本 给你一个清晰总结。
switch 语句支持的类型(Java 7 及以前)✅ 只能用于以下类型:
整数类型
byteshortcharint枚举类型(enum)
字符串(String)
❌ 不支持:
longfloatdoublebooleanInteger 在老版本不能直接用,需拆箱)switch (str) {
case "A":
System.out.println("A");
break;
case "B":
System.out.println("B");
break;
}
switch (day) { // enum
case MONDAY:
break;
}
switch 表达式增强除了上述类型外,switch 表达式仍然 只支持:
byte / short / char / intenumString⚠️ 依然不支持 long、boolean、float、double
int num = switch (x) {
case 1 -> 10;
case 2 -> 20;
default -> 0;
};
switch 可用于:
null 判断(Java 21 起更完善)示例(Java 21):
switch (obj) {
case String s -> System.out.println(s);
case Integer i -> System.out.println(i);
case null -> System.out.println("null");
default -> System.out.println("unknown");
}
| 类型 | 是否可用 |
|---|---|
long |
❌ |
boolean |
❌ |
float / double |
❌ |
Integer(直接) |
❌(需拆箱) |
String |
✅(Java 7+) |
enum |
✅ |
null |
⚠️ 旧版不支持,新版支持 |
switch?x > 10)Map 或策略模式)如果你愿意,我也可以:
if-else 和 switch你更想了解哪一块?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。