switch语句的穿透现象
时间: 2023-07-06 12:42:09 浏览: 45
在 switch 语句中,如果一个 case 分支中没有包含 break 语句,那么程序会继续执行后面的 case 分支,这个现象被称为“穿透”。
例如,下面的代码中,当 `a` 的值为 0 或 1 时,会依次执行 `System.out.println("a=0 or 1");` 和 `System.out.println("a=2");` 两行代码:
```java
switch (a) {
case 0:
case 1:
System.out.println("a=0 or 1");
case 2:
System.out.println("a=2");
break;
default:
System.out.println("a is not 0, 1 or 2");
break;
}
```
如果在 case 1 分支中加入了 break 语句,那么在 `a` 的值为 1 时,只会执行 `System.out.println("a=0 or 1");` 一行代码。
穿透现象可以用来简化代码,例如:
```java
switch (day) {
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("weekday");
break;
case 6:
case 7:
System.out.println("weekend");
break;
default:
System.out.println("invalid day");
break;
}
```
这段代码判断一个整数变量 `day` 表示的是星期几。如果 `day` 的值是 1 到 5 中的任意一个,输出 "weekday";如果是 6 或 7,输出 "weekend";否则输出 "invalid day"。可以看到,使用穿透现象可以将多个 case 分支合并为一个,使代码更加简洁。