首页 > 编程笔记 > Java笔记 阅读:11

Java中的switch case分支语句(非常详细,附带实例)

我们编写的程序默认是从上到下一行行地顺序执行的,但有些情况下又需要通过条件判断来控制程序的执行顺序,从而实现程序的选择执行。

在 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 语句时,程序会先找到第一个符合条件的分支执行,然后执行后面的所有分支,不管后面的分支是否满足条件。

相关文章