在Java中,switch
语句是一个多分支选择结构,通常用于根据变量的值执行不同的代码块。除了基本的用法外,switch
语句还有一些不太常见但有用的隐藏用法。以下是一些示例和说明:
1. 使用字符串作为条件
从Java 7开始,switch
语句支持字符串类型。这使得可以更直观地处理多个字符串值。
String day = "MONDAY";
switch (day) {
case "MONDAY":
System.out.println("Start of the week");
break;
case "FRIDAY":
System.out.println("End of the week");
break;
default:
System.out.println("Midweek day");
}
2. 多个case共享同一代码块
可以将多个case
标签放在一起,共享同一代码块,减少重复代码。
int number = 2;
switch (number) {
case 1:
case 2:
case 3:
System.out.println("Number is between 1 and 3");
break;
default:
System.out.println("Number is out of range");
}
3. 不使用break语句
如果不使用break
语句,程序会继续执行下一个case
的代码,直到遇到break
或switch
结束。这种用法称为“fall-through”。
int number = 2;
switch (number) {
case 1:
System.out.println("One");
case 2:
System.out.println("Two");
case 3:
System.out.println("Three");
break;
default:
System.out.println("Not 1, 2, or 3");
}
// 输出:Two
// 输出:Three
4. 使用枚举类型
switch
语句可以与枚举类型结合使用,使代码更加清晰和类型安全。
enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
Day today = Day.MONDAY;
switch (today) {
case MONDAY:
System.out.println("Start of the week");
break;
case FRIDAY:
System.out.println("End of the week");
break;
default:
System.out.println("Midweek day");
}
5. 使用表达式作为case条件
在Java 12及更高版本中,可以使用switch
表达式,允许在case
中使用箭头语法,简化代码。
int number = 2;
String result = switch (number) {
case 1 -> "One";
case 2 -> "Two";
case 3 -> "Three";
default -> "Not 1, 2, or 3";
};
System.out.println(result);
6. 组合条件
在case
中可以使用逻辑运算符来组合条件,但需要注意的是,case
标签本身不能直接使用逻辑运算符。
int number = 2;
switch (number) {
case 1:
case 2:
System.out.println("Number is 1 or 2");
break;
case 3:
System.out.println("Number is 3");
break;
default:
System.out.println("Number is out of range");
}
7. 使用标签
在switch
语句中,可以使用标签来标识特定的case
,这在嵌套的switch
语句中尤其有用。
outerSwitch:
switch (outerValue) {
case 1:
switch (innerValue) {
case 1:
System.out.println("Outer 1, Inner 1");
break outerSwitch; // 退出外层 switch
case 2:
System.out.println("Outer 1, Inner 2");
break;
}
break;
}
总结
Java中的switch
语句不仅仅是简单的条件选择工具,它还支持字符串、枚举、表达式等多种用法。通过合理利用这些隐藏用法,可以使代码更加简洁、清晰和高效。