zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Java核心技术卷I基础知识3.8.5 多重选择:switch语句

2023-03-09 22:18:04 时间

3.8.5 多重选择:switch语句


在处理多个选项时,使用if/else结构显得有些笨拙。Java有一个与C/C++完全一样的switch语句。

例如,如果建立一个如图3-13所示的包含4个选项的菜单系统,可以使用下列代码:

 

switch语句将从与选项值相匹配的case标签处开始执行直到遇到break语句,或者执行到switch语句的结束处为止。如果没有相匹配的case标签,而有default子句,就执行这个子句。

      警告:有可能触发多个case分支。如果在case分支语句的末尾没有break语句,那么就会接着执行下一个case分支语句。这种情况相当危险,常常会引发错误。为此,我们在程序中从不使用switch语句。

如果你比我们更喜欢switch语句,编译代码时可以考虑加上-Xlint:fallthrough选项,如下所示:

 

这样一来,如果某个分支最后缺少一个break语句,编译器就会给出一个警告消息。

如果你确实正是想使用这种“直通式”(fallthrough)行为,可以为其外围方法加一个标注@SuppressWarnings("fallthrough")。这样就不会对这个方法生成警告了。(标注是为编译器或处理Java源文件或类文件的工具提供信息的一种机制。我们将在卷Ⅱ的第8章详细讨论标注。)

 

图3-13 switch语句的流程图

case标签可以是:

类型为char、byte、short或int的常量表达式。

枚举常量。

从Java SE 7开始,case标签还可以是字符串字面量。

例如:

 

当在switch语句中使用枚举常量时,不必在每个标签中指明枚举名,可以由switch的表达式值确定。