繁体   English   中英

do-while循环使用continue,在Java中使用和不使用标签

[英]do-while loops with continue and with and without a label in Java

让我们看看下面的do-while循环。 这很明显,毫无疑问。

do
{
    System.out.println("Hello world");
    break;
} while(false);

这很明显,只需在控制台上显示字符串Hello world并退出。


现在,以下版本的do-while似乎陷入了无限循环,但事实并非如此。 它还在控制台上显示字符串Hello world并以静默方式退出。

do
{
    System.out.println("Hello world");
    continue;
} while(false);

让我们看看另一个带有标签的do-while版本,如下所示。

label:do
{
    System.out.println("Hello world");
    continue label;
} while(false);

它也会在控制台上显示消息Hello world并退出。 它不是一个无限循环,因为它似乎意味着这个场景中的所有版本都相同的方式工作。 怎么样?

continue语句意味着“进入下一次迭代的循环控制逻辑”。 它并不意味着无条件地启动下一个循环迭代。

(如果有人想在此引用JLS,相关部分是JLS 14.16 。但是,规范的这一部分有点复杂,并且取决于其他构造的规范;例如各种循环语句和try / catch /最后。)

就像for循环一样, do-whilewhile条件总是在进入循环体之前检查(当然,在第一次传递之后)。 而且,就像使用for循环一样, continue永远不会导致跳过终止表达式。

在实际继续之前,continue正在检查布尔表达式,如手册所示:

continue语句跳过for,while或do-while循环的当前迭代。 未标记的表单跳到最内层循环体的末尾,并计算控制循环的布尔表达式。

有关更多详细信息,请参阅: 分支语义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM