switch
语句是Java中用于多分支选择的一种控制结构,它根据一个表达式的值来选择执行不同的代码块。switch
语句通常用于替代多个if...else if
语句,使代码更加简洁和易读。以下是switch
语句的详细解析:
基本语法
switch (表达式) {
case 值1:
// 当表达式等于值1时执行的代码
break;
case 值2:
// 当表达式等于值2时执行的代码
break;
// 可以有任意数量的 case 语句
default:
// 当表达式不等于任何 case 值时执行的代码
}
组成部分
- 表达式:通常是一个整数类型(
byte
、short
、int
、char
)或枚举类型,或者是从Java 7开始支持的String
类型。 - case 语句:每个
case
后面跟一个常量值,当表达式的值与该常量值匹配时,执行对应的代码块。 - break 语句:用于跳出
switch
语句。如果没有break
,程序将继续执行下一个case
的代码(称为“case穿透”)。 - default 语句:当表达式的值与所有
case
值都不匹配时,执行default
语句。default
是可选的。
示例
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;
default:
System.out.println("Weekend");
}
输出:
Wednesday
case穿透
如果省略break
,程序会继续执行下一个case
的代码,直到遇到break
或switch
语句结束。这在某些情况下可以用于多个case
共享相同的代码块。
示例:
int month = 2;
String monthString;
switch (month) {
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
case 3: monthString = "March";
break;
// ... 其他月份
default: monthString = "Invalid month";
}
System.out.println(monthString);
输出:
February
使用枚举
从Java 5开始,switch
语句可以用于枚举类型。
示例:
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
Day day = Day.WEDNESDAY;
switch (day) {
case MONDAY:
System.out.println("Monday");
break;
case TUESDAY:
System.out.println("Tuesday");
break;
case WEDNESDAY:
System.out.println("Wednesday");
break;
// ... 其他枚举值
default:
System.out.println("Weekend");
}
输出:
Wednesday
使用字符串
从Java 7开始,switch
语句可以用于String
类型。
示例:
String fruit = "Apple";
switch (fruit) {
case "Apple":
System.out.println("Apple");
break;
case "Banana":
System.out.println("Banana");
break;
case "Orange":
System.out.println("Orange");
break;
default:
System.out.println("Unknown fruit");
}
输出:
Apple
注意事项
break
语句:确保在每个case
的末尾使用break
,除非你明确希望实现“case穿透”。default
语句:虽然default
是可选的,但建议始终包含,以处理未预料到的情况。- 可读性:
switch
语句可以增加代码的可读性,尤其是在处理多个离散值时。
通过合理使用switch
语句,可以实现清晰且高效的多分支选择逻辑。