Java核心技术卷I基础知识3.8.5 多重选择:switch语句-阿里云开发者社区

开发者社区> 华章出版社> 正文

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

简介:

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的表达式值确定。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接