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

Java switch用法详解(新手必看)

Java 中的 switch 语句可以基于一个变量的值,选择执行不同的代码块。它通常用来处理固定值的判断。

在 Java 12 及之后的版本中,Java 引入了 switch 表达式的概念,它进一步扩展了 switch 语句的功能。switch 表达式允许在一个表达式中直接返回一个值,而不仅仅是在不同的代码块中执行代码。

下面我们分别详细介绍 switch 语句和 switch 表达式。

Java switch语句的用法

最早的 switch 语句是从 C 和 C++ 语言继承而来的,下面先介绍 switch 语句基本形式的语法结构,如下所示:
switch (表达式) {
    case 值1:
       语句组1
    case 值2:
       语句组2
    case 值3:
       语句组3
    ...
    case 值n:
       语句组n
    default:
       语句组n+1
}
default 分支可以省略。switch 语句中“表达式”的计算结果必须是以下几种类型:
其他类型的表达式,如 long、float、double 等,以及自定义类对象等,是不允许作为 switch 语句的表达式的。

注意,虽然 default 语句是可选的,但在某些情况下,为了保证程序的正确性,我们可能需要在 switch 语句中提供一个 default 分支,以处理未匹配到其他 case 值时的情况。这样可以避免在表达式值不匹配任何 case 时导致的意外行为。

【实例 1】表达式计算结果是 int 类型
// 表达式计算结果是 int 类型
public class SwitchExample1 {
    public static void main(String[] args) {
        int dayOfWeek = 3;
        switch (dayOfWeek) {
            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("无效的星期值");
        }
    }
}
程序运行结果:

今天是星期三


【实例 2】表达式计算结果是 String 类型
// 表达式计算结果是 String 类型
public class SwitchExample2 {
    public static void main(String[] args) {
        String day = "Tuesday";

        switch (day) {
            case "Monday":
                System.out.println("星期一");
                break;
            case "Tuesday":
                System.out.println("星期二");
                break;
            case "Wednesday":
                System.out.println("星期三");
                break;
            case "Thursday":
                System.out.println("星期四");
                break;
            case "Friday":
                System.out.println("星期五");
                break;
            case "Saturday":
                System.out.println("星期六");
                break;
            case "Sunday":
                System.out.println("星期日");
                break;
            default:
                System.out.println("无效的星期值");
        }
    }
}

程序运行结果:

星期二

Java switch表达式

在 Java 12 中引入了新的 switch 表达式,Java 14 进一步增强了这个特性。

switch 表达式是对传统 switch 语句的改进,允许在一种更简洁、更灵活的方式下进行条件判断。它可以用作表达式,而不仅仅是语句。

传统的 switch 语句在执行匹配时,一旦找到匹配的 case,就会执行该 case 以下的所有语句,或者直到遇到 break 或者整个 switch 语句结束。而 switch 表达式允许将匹配的结果赋值给一个变量,从而可以更方便地进行数据的处理。

以下是 switch 表达式的一般语法:
result = switch (expression) {
    case value1 -> expression1;
    case value2 -> expression2;
    // ...
    case valueN -> expressionN;
    default -> expressionDefault;
};
这段代码将表达式 expression 与一系列值 value1, value2, ..., valueN 进行匹配。如果 expression 与某个值匹配,就会执行相应的 expression。如果没有匹配项,就会执行 default 后面的 expressionDefault。switch 表达式将匹配的结果赋值给变量 result,这样 result 就包含了相应匹配项的结果值。

在计算机编程中,表达式(Expression)是由操作数和操作符组成的组合,用于产生一个值。表达式可以是简单的常量、变量,也可以是复杂的数学运算、函数调用等组合。

例如:
public class SwitchExample {
    public static void main(String[] args) {
        int dayOfWeek = 3;
        String dayName = switch (dayOfWeek) {
            case 1 -> "星期日";
            case 2 -> "星期一";
            case 3 -> "星期二";
            case 4 -> "星期三";
            case 5 -> "星期四";
            case 6 -> "星期五";
            case 7 -> "星期六";
            default -> "无效的日期";
        };
        System.out.println("今天是" + dayName);
    }
}
程序运行结果:

今天是星期二

相关文章