switch 能用于 byte、long、String 吗?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
在 Java 21、不开启预览的前提下,byte 可以,String 可以,基本类型 long 不能直接作为 switch 选择器。传统常量 switch 还支持 short、char、int、对应包装类型和枚举。Java 21 的模式 switch 又支持更广泛的引用类型,不能把旧式类型列表当成全部规则。
讲清原理
要分清“基本类型 long”和“引用类型 Long”。前者不能直接用于这一版本的 switch;后者可以在模式 switch 中按引用类型进行匹配。模式 switch 还需要考虑穷尽性、分支支配关系及 null。
String 常量分支按字符串内容匹配,不是要求引用相同。传统写法遇到 null 通常会抛空指针;Java 21 可以用明确的 case null 处理它。不同版本的增强规则不同,回答前应先限定版本。
例子与易错点
String value = "yes";
String result = switch (value) {
case "yes" -> "通过";
default -> "其他";
};
System.out.println(result); // 通过
Java 21 中 switch (1L) 不合法。不要为了规避限制直接把 long 强转成 int,否则可能丢失高位,改变分支含义。
相关题:第 55 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。