[英]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-while
的while
条件总是在进入循环体之前检查(当然,在第一次传递之后)。 而且,就像使用for
循环一样, continue
永远不会导致跳过终止表达式。
在实际继续之前,continue正在检查布尔表达式,如手册所示:
continue语句跳过for,while或do-while循环的当前迭代。 未标记的表单跳到最内层循环体的末尾,并计算控制循环的布尔表达式。
有关更多详细信息,请参阅: 分支语义
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.