我正在查看切换条件语句的代码
char c1=65;
switch(c1){
case 'A':
System.out.println("one");
default:
System.out.println("two");
case 'b':
System.out.println("three");
}
虽然结果是'一二三'但是在调试时我发现它首先进入A的ASCII值65的情况A,但是它也执行所有剩余的情况但是如果我放了休息;然后它出来了,所以这意味着如果我们不放弃它会继续执行所有的情况请告知。
答案 0 :(得分:6)
如果你没有中断,匹配案例之后的所有其他案例将自动执行。在两种情况下,控制将来自切换案例:
1. When it ends.
2. When it finds a break.
答案 1 :(得分:2)
您可以阅读java language specification第14.11节。它清楚地定义了如何执行开关块。
由于
答案 2 :(得分:1)
它将继续执行它直到达到休息状态。 Here您可以阅读有关switch Statement的更多信息。
答案 3 :(得分:1)
Break用于转到Switch的末尾,从而完成switch语句的执行。
不仅是Java,它在许多语言中都是一样的。
答案 4 :(得分:1)
@ user1351820,您的理解是正确的。
每个break语句都会终止封闭的switch语句。控制流继续切换块后面的第一个语句。 break语句是必要的因为没有它们,开关块中的语句通过:All statements after the matching case label are executed in sequence, regardless of the expression of subsequent case labels, until a break statement is encountered.
程序SwitchDemoFallThrough显示切换块中的语句。该程序显示对应于整数月份的月份以及该年度中的月份。
从技术上讲,最终中断不是必需的,因为flow不属于switch语句。建议使用中断,以便更容易修改代码并减少错误。默认部分处理其中一个案例部分未明确处理的所有值。
参考: docs.oracle
答案 5 :(得分:1)
是的,然后将执行所有在案件之下的案例 如果您的匹配大小写是最后一个,那么只有匹配的大小写才能执行或匹配大小写在匹配大小写的上面的中间情况下将不会执行,但匹配大小写的情况将与匹配大小写一起执行。
char c1=65; switch(c1)
{
case 'B':
System.out.println("three");
default:
System.out.println("two");
case 'A':
System.out.println("one");
}
在这种情况下,您的输出将为one
。
答案 6 :(得分:0)
是的,case
声明失败了。如果你对背景原因感兴趣,这个结构源于C,它也被称为“带宏的汇编程序”,这意味着它是一种非常低级的语言。 C语言中定义的switch
语句非常适合最佳实现 - 对切换值有一些限制,它只需要两条指令:一条用于查找跳转地址的表查找,另一条用于跳转。跳转执行后继续执行,无需进一步干预 - 因此需要明确的break
才能走出障碍。