可以的,但要看你怎么用。Java 里的 switch 本身语法是合法的,但在某些情况下会报错或运行异常。下面分情况说明。
switch 的表达式类型 有限制,用错会直接编译失败。
✅ 支持的类型:
byte / short / char / intenumString(Java 7+)Byte / Short / Character / Integer(包装类型)❌ 不支持的类型:
long a = 1L;
switch (a) { } // ❌ 编译错误
double d = 1.0;
switch (d) { } // ❌ 编译错误
int x = 1;
switch (x) {
case "1": // ❌ 编译错误,类型不一致
}
switch (x) {
case 1:
case 1: // ❌ 编译错误,重复 case
}
int a = 1;
switch (x) {
case a: // ❌ 编译错误,a 不是常量
}
✅ 正确:
final int a = 1;
case a:
String s = null;
switch (s) { // ❌ NullPointerException
}
int x = 5;
switch (x) {
case 1:
System.out.println(1);
break;
case 2:
System.out.println(2);
}
✅ 编译通过
❌ 运行时什么都不输出(没有匹配项)
int result = switch (x) {
case 1 -> 10;
case 2 -> 20;
};
❌ 编译错误:没有 default 或覆盖不全
✅ 正确:
int result = switch (x) {
case 1 -> 10;
case 2 -> 20;
default -> 0;
};
✅ Java 的 switch 会报错,但通常是:
null(运行期)如果你有具体代码报错,可以直接贴出来,我可以帮你精确定位是哪一行、为什么错。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。