Java 分支 switch

30 阅读2分钟

在 Java 编程中,switch语句是一种用于根据不同条件执行不同代码块的结构。与if/else语句相比,switch语句更适用于对单个变量有多个可能取值时的情况。

语法

switch (expression) {
    case value1:
        // 当expression的值等于value1时执行的代码
        break;
    case value2:
        // 当expression的值等于value2时执行的代码
        break;
    // 可以有多个case
    default:
        // 当expression的值不匹配任何case时执行的代码
        break;
}

语法规范:

  • expression:在switch后面括号中的表达式。其值将与每个case中的值进行比较。
  • case:紧跟在switch后面的每个可能值,值必须是常量或常量表达式,不能是变量。
  • break:每个case代码块末尾的关键字,用于退出switch语句。如果缺少break,程序将继续执行下一个case中的代码。
  • default:可选部分,当expression的值与任何case都不匹配时,执行default中的代码。

代码示例

switch 简单示例

public class SwitchExample {
    public static void main(String[] args) {
        int day = 4;
        String dayString;

        switch (day) {
            case 1:
                dayString = "星期一";
                break;
            case 2:
                dayString = "星期二";
                break;
            case 3:
                dayString = "星期三";
                break;
            case 4:
                dayString = "星期四";
                break;
            case 5:
                dayString = "星期五";
                break;
            case 6:
                dayString = "星期六";
                break;
            case 7:
                dayString = "星期日";
                break;
            default:
                dayString = "无效日期";
                break;
        }
        System.out.println("今天是:" + dayString);
    }
}

代码运行结果:

今天是:星期四

case 缺少 break

如果在一个情况的代码块末尾没有写上break,程序将会继续执行下一个情况的代码块。这意味着即使表达式的值匹配了一个情况,程序也会继续执行后续情况的代码。

int day = 1;
switch (day) {
    case 1:
        System.out.println("星期一");
    case 2:
        System.out.println("星期二");
    // ...其他情况...
    default:
        System.out.println("这是默认情况");
}

代码运行结果:

星期三

多个 case 放到一起

如果有多个情况需要执行相同的代码块,可以将这些情况写在一起,共享同一个代码块。

public class MultiCaseSwitchExample {
    public static void main(String[] args) {
        int month = 3;
        String monthString;

        switch (month) {
            case 1:
            case 2:
            case 3:
                monthString = "一季度";
                break;
            case 4:
            case 5:
            case 6:
                monthString = "二季度";
                break;
            case 7:
            case 8:
            case 9:
                monthString = "三季度";
                break;
            case 10:
            case 11:
            case 12:
                monthString = "四季度";
                break;
            default:
                monthString = "无效月份";
                break;
        }

        System.out.println("这个月份属于:" + monthString);
    }
}

代码运行结果:

这个月份属于:一季度