Java中的switch case分支语句(非常详细,附带实例)
我们编写的程序默认是从上到下一行行地顺序执行的,但有些情况下又需要通过条件判断来控制程序的执行顺序,从而实现程序的选择执行。
在 Java 程序中,实现条件判断的语句有两种,分别是 if 语句和 switch 语句,本节带领大家系统学习 switch 语句的用法。
从分支处理的角度来看,if 条件分支语句更擅长处理两个分支的情况,因为对于多分支的情况它需要有多个 if 进行嵌套,于是 Java 提供了 switch 条件分支语句,它天然地支持多分支处理。
switch 后的大括号里的 case 语句用于指定不同的分支,其中“case 值1:”表示当表达式或变量的值等于“值1”时执行“语句块1”,“case 值2:”表示当表达式或变量的值等于“值2”时执行“语句块2”。类似地,可以编写 n 个 case 分支。
注意最后有一个 default 分支,它表示默认分支,即当前面所有的 n 个 case 分支都没匹配上时就会匹配这个默认分支。
此外,可以看到每个分支都有一个 break 语句,它表示匹配上了该分支后就跳出整个 switch 语句结构,不再继续往下匹配。
下图所示的流程图可以帮助我们理解 switch 语句。

图 1 switch流程图
程序开始执行后到达 switch 处时开始判断表达式或变量的值,包括“case 值1”“case 值2”……“case 值n”以及“default”等共 n+1 个分支,根据表达式或变量的值去匹配对应的分支来执行。
下面是 switch 语句的一个示例:
例如:
同时可以看到,在不使用 break 语句时,程序会先找到第一个符合条件的分支执行,然后执行后面的所有分支,不管后面的分支是否满足条件。
在 Java 程序中,实现条件判断的语句有两种,分别是 if 语句和 switch 语句,本节带领大家系统学习 switch 语句的用法。
从分支处理的角度来看,if 条件分支语句更擅长处理两个分支的情况,因为对于多分支的情况它需要有多个 if 进行嵌套,于是 Java 提供了 switch 条件分支语句,它天然地支持多分支处理。
Java switch语句的使用
switch 语句的语法如下:switch (表达式或变量) { case 值1: 语句块1; break; case 值2: 语句块2; break; … case 值n: 语句块n; break; default: 语句块n+1; break; }switch 后的小括号里是一个表达式或者变量,switch 语句会根据它们所对应的值进行分支判断,值的数据类型可以是 byte、char、short、int、long、String 或枚举。
switch 后的大括号里的 case 语句用于指定不同的分支,其中“case 值1:”表示当表达式或变量的值等于“值1”时执行“语句块1”,“case 值2:”表示当表达式或变量的值等于“值2”时执行“语句块2”。类似地,可以编写 n 个 case 分支。
注意最后有一个 default 分支,它表示默认分支,即当前面所有的 n 个 case 分支都没匹配上时就会匹配这个默认分支。
此外,可以看到每个分支都有一个 break 语句,它表示匹配上了该分支后就跳出整个 switch 语句结构,不再继续往下匹配。
下图所示的流程图可以帮助我们理解 switch 语句。

图 1 switch流程图
程序开始执行后到达 switch 处时开始判断表达式或变量的值,包括“case 值1”“case 值2”……“case 值n”以及“default”等共 n+1 个分支,根据表达式或变量的值去匹配对应的分支来执行。
下面是 switch 语句的一个示例:
public class SwitchStatementTest { public static void main(String[] args) { int day = 3; switch (day) { case 1: System.out.println("星期一"); break; case 2: System.out.println("星期二"); break; case 3: System.out.println("星期三"); break; case 4: System.out.println("星期四"); break; case 5: System.out.println("星期五"); break; case 6: System.out.println("星期六"); break; case 7: System.out.println("星期日"); break; default: System.out.println("错误的数值"); break; } } }switch 语句会根据变量 day 的值来输出星期几,值 1~7 分别对应星期一到星期日这 7 个分支。另外,default 是默认分支,如果不是值 1~7 则会执行这个分支。该程序最终输出结果为“星期三”。
switch语句中break的语义
前面的学习中,我们看到每个 case 分支都使用了 break 语句,它的作用是阻断 switch 语句在匹配成功后仍继续往下执行,实际使用时建议在每个分支最后加上 break 语句,不然很容易出现错误的逻辑。例如:
public class SwitchStatementTest3 { public static void main(String[] args) { int num = 4; switch (num) { case 3: System.out.println("3"); case 4: System.out.println("4"); case 5: System.out.println("5"); default: System.out.println("6"); } } }switch 语句的 4 个分支都没有添加 break 语句,那么当变量 num 为 4 时程序将会输出 4、5、6,很明显产生了错误的逻辑。我们可以在每个分支的后面都加上 break 语句,这样就能正确执行了。
同时可以看到,在不使用 break 语句时,程序会先找到第一个符合条件的分支执行,然后执行后面的所有分支,不管后面的分支是否满足条件。