Java switch case 语句
switch 语句是 Java 中的一种控制结构,用于在多个选项之间进行选择。它提供了比多个 if...else 语句更简洁和高效的方式来处理多个条件的判断。
1. switch 语句的基本语法
switch (表达式) {
case 常量1:
// 当表达式的值等于常量1时,执行此代码
break;
case 常量2:
// 当表达式的值等于常量2时,执行此代码
break;
case 常量3:
// 当表达式的值等于常量3时,执行此代码
break;
default:
// 如果没有任何一个 case 匹配时,执行此代码
}
- 表达式:可以是整数类型(
byte、short、char、int),也可以是枚举类型、String或者var(Java 14 引入)。 - case:用来匹配表达式的可能值,常量值可以是
int、char、String等类型。 - break:用于终止
switch语句块的执行,防止继续执行下一个case。如果没有break,switch会继续执行接下来的case,即“穿透”。 - default:可选项,如果没有任何
case匹配,default会执行。default可以放在任何位置,但通常放在所有case语句的最后。
2. switch 语句的示例
示例 1:使用整数类型进行匹配
int day = 3;
switch (day) {
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 进行匹配(Java 7 及以后支持)
String fruit = "apple";
switch (fruit) {
case "apple":
System.out.println("苹果");
break;
case "banana":
System.out.println("香蕉");
break;
case "orange":
System.out.println("橙子");
break;
default:
System.out.println("未知水果");
}
输出:
苹果
3. switch 语句的特点
- 效率:
switch语句通常比多重if...else判断语句执行效率更高,尤其是当有多个case时。 - 匹配类型:
switch语句要求表达式和case的值必须是相同类型,且 Java 7 及以后版本支持使用String类型进行匹配。 - 可读性:当有多个条件需要判断时,使用
switch可以使代码更简洁,易于阅读和维护。
4. 没有 break 的情况(穿透)
如果在某个 case 中没有 break,代码会继续执行下一个 case,即使条件不匹配,这种行为称为“穿透”。这种情况有时是有意为之,但在多数情况下,需要使用 break 来避免它。
示例:没有 break 的穿透
int day = 3;
switch (day) {
case 1:
System.out.println("星期一");
case 2:
System.out.println("星期二");
case 3:
System.out.println("星期三");
default:
System.out.println("未知");
}
输出:
星期三
未知
由于没有 break,代码会从 case 3 执行到 default。
5. 使用多个 case 标签来执行相同的代码
你可以将多个 case 标签合并来执行相同的代码,而无需为每个 case 编写重复的代码。如下所示:
int day = 1;
switch (day) {
case 1:
case 2:
case 3:
System.out.println("工作日");
break;
case 4:
case 5:
System.out.println("周末");
break;
default:
System.out.println("未知");
}
输出:
工作日
6. switch 语句中的 var(Java 14 引入)
在 Java 14 及以后版本,你可以使用 var 来代替 switch 表达式中的类型,使代码更加简洁。例如:
var day = 2;
switch (day) {
case 1 -> System.out.println("星期一");
case 2 -> System.out.println("星期二");
case 3 -> System.out.println("星期三");
default -> System.out.println("无效的输入");
}
这种形式叫做箭头语法(Arrow Syntax),它是 switch 表达式的一种新用法,提供了更加简洁的表达方式。
总结
switch语句提供了一个有效的方式来处理多个条件。- 它比多个
if...else语句更简洁,尤其是在条件很多时,switch可以提高代码的可读性和执行效率。 switch支持多种类型,包括整数、字符、枚举类型和String类型(Java 7 及以后)。switch中的case标签需要与表达式的类型一致,并且可以通过break防止“穿透”现象。
更多详细内容请关注其他相关文章。