我在OCA Java 8考试学习指南中看到过这段代码,这让我感到困惑。
int dayOfWeek = 5;
switch(dayOfWeek) {
case 0:
System.out.println("Sunday");
default:
System.out.println("Weekday");
case 6:
System.out.println("Saturday");
break;
}
这本书说它印刷工作日和星期六。
这是为什么呢?
我认为必须找到该案例才能被选中,因为它是 5 没有被选中,所以什么都不应该发生。
由于没有大小写与dayOfWeek
的值匹配,因此执行默认大小写:打印"Weekday"
由于默认情况没有break
,因此也会执行其后面的下一个情况,直到它到达开关结束或中断:打印"Saturday"
很简单:因为你"跌倒"了案例。如果你想不掉下来,你必须使用break
.
因此,默认设置实际上是在第一个匹配项之后执行所有案例 - 直到您点击第一个break
语句。
您可以提及要显式执行某些操作的情况。 否则,对于所有剩余的情况,它们将在default
中处理。
另外,请检查相关的"默认"情况是否必须在交换机中排在最后?以获取更多说明。
正如其他人在这里也指出的那样,如果你不休息,那么它也会经历所有剩余的情况,直到遇到break
。