没有 Break 的 Switch 语句
当 switch 语句在 case 之间缺少break语句时,会遇到错误。考虑下面的代码片段:
switch (x) { case 0: // code case 1: // code case 2: // code }
说明
Java 的 switch 语句需要用 break 语句来分隔大小写。如果没有中断,即使条件与前一个案例匹配,后续案例中的代码也会执行。在上面的示例中,如果 x 为 1,则情况 1 和 2 都会被执行。
这种行为通常是无意的,可能会导致不正确的程序逻辑。 Findbugs 识别此潜在错误并将其标记为警告。
用法
Break 语句用于终止案例的执行并防止代码落入后续案例案例。以下代码在语法上是正确的,并且只会执行匹配大小写的代码:
switch (foo) { case 0: doSomething(); break; case 1: doSomethingElse(); break; default: doSomeOtherThing(); break; }
Exception
在某些情况下,可能需要有意允许代码将落入后续案例。例如,
switch (foo) { case 0: case 1: doSomething(); break; case 2: doSomethingElse(); break; default: doSomeOtherThing(); break; }
在这种情况下,如果 foo 为 0 或 1,则 doSomething() 将被执行。这是一种称为“fall-through”的常见模式,并且在没有代码时通常被认为是可接受的出现在案例之间(例如案例 1 和案例 2)。在这些情况下,大多数分析工具不会将失败案例标记为错误。
以上是为什么 Switch 语句需要 Break 语句?的详细内容。更多信息请关注PHP中文网其他相关文章!