Java 中的 Switch 语句详解
简介
在 Java 编程中,switch
语句是一种常用的条件控制结构,它允许根据一个表达式的值从多个分支中选择一个执行。在 Java 的不同版本中,switch
语句不断发展和改进,为开发者提供了更简洁、更强大的功能。本文将详细介绍 Java 中 switch
语句的基础概念、使用方法、常见实践以及最佳实践,帮助读者深入理解并高效使用 switch
语句。
目录
- 基础概念
- 使用方法
- 传统
switch
语句 - Java 12 及以后的
switch
表达式
- 传统
- 常见实践
- 枚举类型的
switch
- 字符串类型的
switch
- 枚举类型的
- 最佳实践
- 避免
fall-through
- 使用
switch
表达式简化代码
- 避免
- 小结
- 参考资料
基础概念
switch
语句是一种多分支选择语句,它根据一个表达式的值,从多个可能的分支中选择一个执行。switch
语句中的表达式可以是整数类型(byte
、short
、int
、char
)、枚举类型、字符串类型(从 Java 7 开始支持)以及 Java 14 及以后支持的 var
类型。每个分支由一个 case
标签和对应的代码块组成,当表达式的值与某个 case
标签的值匹配时,该 case
标签后的代码块将被执行。
使用方法
传统 switch
语句
传统的 switch
语句使用 break
语句来终止每个 case
分支,避免 fall-through
(即执行完一个 case
分支后继续执行下一个 case
分支)。以下是一个传统 switch
语句的示例:
public class TraditionalSwitchExample {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("Invalid day");
}
}
}
在上述示例中,switch
语句根据 day
变量的值选择相应的 case
分支执行,并在每个 case
分支的末尾使用 break
语句终止。如果 day
的值不在 1 到 7 的范围内,则执行 default
分支。
Java 12 及以后的 switch
表达式
从 Java 12 开始,引入了 switch
表达式,它允许 switch
语句返回一个值。switch
表达式使用箭头语法(->
)来指定每个 case
分支的结果,并且不需要使用 break
语句。以下是一个 switch
表达式的示例:
public class SwitchExpressionExample {
public static void main(String[] args) {
int day = 3;
String dayName = 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(dayName);
}
}
在上述示例中,switch
表达式根据 day
变量的值返回相应的字符串,并将结果赋值给 dayName
变量。
常见实践
枚举类型的 switch
switch
语句经常与枚举类型一起使用,因为枚举类型的取值是有限的,非常适合使用 switch
语句进行处理。以下是一个使用枚举类型的 switch
语句示例:
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
public class EnumSwitchExample {
public static void main(String[] args) {
Day day = Day.WEDNESDAY;
switch (day) {
case MONDAY:
System.out.println("It's Monday!");
break;
case TUESDAY:
System.out.println("It's Tuesday!");
break;
case WEDNESDAY:
System.out.println("It's Wednesday!");
break;
case THURSDAY:
System.out.println("It's Thursday!");
break;
case FRIDAY:
System.out.println("It's Friday!");
break;
case SATURDAY:
System.out.println("It's Saturday!");
break;
case SUNDAY:
System.out.println("It's Sunday!");
break;
}
}
}
在上述示例中,switch
语句根据 Day
枚举类型的值选择相应的 case
分支执行。
字符串类型的 switch
从 Java 7 开始,switch
语句支持使用字符串类型的表达式。以下是一个使用字符串类型的 switch
语句示例:
public class StringSwitchExample {
public static void main(String[] args) {
String color = "red";
switch (color) {
case "red":
System.out.println("The color is red.");
break;
case "blue":
System.out.println("The color is blue.");
break;
case "green":
System.out.println("The color is green.");
break;
default:
System.out.println("Unknown color.");
}
}
}
在上述示例中,switch
语句根据 color
字符串的值选择相应的 case
分支执行。
最佳实践
避免 fall-through
在传统的 switch
语句中,由于没有使用 break
语句会导致 fall-through
现象,这可能会导致意外的结果。因此,建议在每个 case
分支的末尾使用 break
语句,或者使用 switch
表达式来避免 fall-through
。
使用 switch
表达式简化代码
如果 switch
语句的目的是返回一个值,建议使用 switch
表达式,因为它可以使代码更加简洁和易读。
小结
本文详细介绍了 Java 中 switch
语句的基础概念、使用方法、常见实践以及最佳实践。传统的 switch
语句使用 break
语句来终止每个 case
分支,而 Java 12 及以后的 switch
表达式允许 switch
语句返回一个值,并且不需要使用 break
语句。switch
语句经常与枚举类型和字符串类型一起使用,在使用时应避免 fall-through
现象,并根据需要使用 switch
表达式来简化代码。
参考资料
- 《Effective Java》,作者:Joshua Bloch