Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

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 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。