Java中的`switch`语句是一种多路选择结构,它允许一个变量在其值匹配多个可能的情况之一时执行不同的代码块,`switch`语句基于一个变量(称为表达式)的值来执行不同的代码块。
下面是一个简单的`switch`语句的示例:
int day = 3; String dayString; switch (day) { case 1: dayString = "Monday"; break; case 2: dayString = "Tuesday"; break; case 3: dayString = "Wednesday"; break; case 4: dayString = "Thursday"; break; case 5: dayString = "Friday"; break; case 6: dayString = "Saturday"; break; case 7: dayString = "Sunday"; break; default: dayString = "Invalid day"; break; } System.out.println(dayString);
在这个例子中,`day`变量的值决定了`switch`语句中哪个`case`会被执行,如果`day`的值是3,那么`dayString`将被赋值为"Wednesday",如果`day`的值不在1到7的范围内,那么`default`块将被执行,`dayString`将被赋值为"Invalid day"。
每个`case`块后面都有一个`break`语句,`break`语句用于退出`switch`语句,防止代码继续执行下一个`case`块,如果没有`break`语句,代码将继续执行下一个`case`块,直到遇到`break`语句或`switch`语句结束,这种行为被称为"case穿透"(case fall-through)。
从Java 12开始,`switch`语句还支持一种更简洁的表达式形式,称为"switch表达式"(switch expression),这种形式的`switch`语句不需要`break`语句,并且可以直接返回结果,下面是一个使用`switch`表达式的示例:
int day = 3; String dayString = switch (day) { case 1 -> "Monday"; case 2 -> "Tuesday"; case 3 -> "Wednesday"; case 4 -> "Thursday"; case 5 -> "Friday"; case 6 -> "Saturday"; case 7 -> "Sunday"; default -> "Invalid day"; }; System.out.println(dayString);
这个示例中的`switch`表达式与前面的示例具有相同的功能,但代码更简洁。