要添加到 Michael Borgwardt 的答案,您可以为方便起见做这样的事情(前几天我在阅读 Java rt.jar 源代码时发现了这一点):
BlockSegment:
if (conditionIsTrue) {
doSomeProcessing ();
if (resultOfProcessingIsFalse()) break BlockSegment;
otherwiseDoSomeMoreProcessing();
// These lines get skipped if the break statement
// above gets executed
}
// This is where you resume execution after the break
anotherStatement();
现在,这在逻辑上等价于:
if (conditionIsTrue) {
doSomeProcessing ();
if (!resultOfProcessingIsFalse()) {
otherwiseDoSomeMoreProcessing();
// More code here that gets executed
}
}
anotherStatement();
但是,您可以跳过一些额外的大括号(以及大括号附带的缩进)。也许它看起来更干净(在我看来确实如此),并且在某些地方这种编码风格可能是合适的并且不会令人困惑。
因此,您可以在循环之外使用标签,甚至可以在if
语句之外使用标签。例如,这是有效的 Java 语法(也许你可以想出一个理由来做这样的事情):
statementOne();
statementTwo();
BlockLabel: {
statementThree();
boolean result = statementFour();
if (!result) break BlockLabel;
statementFive();
statementSix();
}
statementSeven();
如果在break
此处执行,则执行跳到标签表示的块的末尾,并被statementFive()
跳过statementSix()
。
if
当您在必须跳过的块中有块时 ,这种样式(没有声明)的用处变得更加明显。一般来说,你可以通过足够聪明地使用循环来完成所有事情。但是,在某些情况下,没有循环的标签更容易阅读代码。例如,如果您需要顺序检查参数,您可以这样做或抛出异常。它最终成为代码的清洁度和个人风格的问题。