我在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;
}
这本书说它打印平日和周六。
这是为什么?
我认为必须找到这个案子才能被选中,因为它未被选中,因此不会发生任何事情。
答案 0 :(得分:2)
由于没有案例与dayOfWeek
的值匹配,因此会执行默认案例:打印"Weekday"
由于默认案例没有break
,因此也会执行其后的下一个案例,直到它到达交换结束或中断:打印"Saturday"
答案 1 :(得分:1)
简单:因为你通过案件“堕落”。如果您不想通过,则必须使用break
。
因此默认情况下,您执行第一次匹配后的所有案例 - 直到您点击第一个break
语句。
答案 2 :(得分:0)
您可以提及您想要明确执行某些操作的案例。
否则,对于所有剩余的案例,他们将在default
处理。
另外,请查看相关的Must the "default" case come last in a switch?以获取更多说明。
正如其他人也指出的那样,如果你没有放弃,那么它会经历所有剩下的情况,直到它遇到break
。