Java 中 switch 详解

最近面试了不少Java开发工程师发现对switch比较陌生,我尝试阐述一下我对它的理解和用法。
swich 是什么
【Java 中 switch 详解】switch源于C语言用在编程中,是一个判断选择代码(有时也被划归为一种选择语句)。其功能就是控制流程流转的。switch 语句可以从一系列代码中选出一段去执行。它的格式如下:

switch(integral-selector) { case integral-value1 : statement; break; case integral-value2 : statement; break; case integral-value3 : statement; break; case integral-value4 : statement; break; case integral-value5 : statement; break; // ... default: statement; }

其中,integral-selector (整数选择因子)是一个能够产生整数值的表达式,switch 能够将这个表达式的结果与每个 integral-value (整数值)相比较。若发现相符的,就执行对应的语句(简单或复合语句,其中并不需要括号)。若没有发现相符的,就执行 default 语句。
在上面的定义中,大家会注意到每个 case 均以一个 break 结尾。这样可使执行流程跳转至 switch 主体的末尾。这是构建 switch 语句的一种传统方式,但 break 是可选的。若省略 break, 会继续执行后面的 case 语句的代码,直到遇到一个 break 为止。通常我们不想出现这种情况,但对有经验的程序员来说,也许能够善加利用。注意最后的 default 语句没有 break,因为执行流程已到了 break 的跳转目的地。当然,如果考虑到编程风格方面的原因,完全可以在 default 语句的末尾放置一个 break,尽管它并没有任何实际的作用。
遵守switch语句规则
  • switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
  • 只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
  • switch()的参数类型不能为实型 。
  • case 标签必须为字符串常量或字面量。
  • case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
switch 字符串
Java 7 增加了在字符串上 switch 的用法。下例展示了从一组 String 中选择可能值的传统方法,以及新式方法:
public class StringSwitch { public static void main(String[] args) { String color = "red"; // 老的方式: 使用 if-then 判断 if("red".equals(color)) { System.out.println("RED"); } else if("yellow".equals(color)) { System.out.println("YELLOW"); } else if("blue".equals(color)) { System.out.println("BLUE"); } else { System.out.println("Unknown"); } // 新的方法: 字符串搭配 switch switch(color) { case "red": System.out.println("RED"); break; case "yellow": System.out.println("YELLOW"); break; case "blue": System.out.println("BLUE"); break; default: System.out.println("Unknown"); break; } } }

输出结果:
RED RED

一旦理解了 switch,你会明白这其实就是一个逻辑扩展的语法糖。新的编码方式能使得结果更清晰,更易于理解和维护。下篇文章聊一聊switch 字符串背后的原理。
觉得这篇内容帮到了您,请您帮忙点赞评论和转发。
关注公众号『 码农洞见 』,有你才狂热。

    推荐阅读