在Java中,“ while”之前和“ break”命令之后的名称是什么意思?

时间:2018-10-20 15:17:34

标签: java

我不知道这段代码:

t:
while (true) {
    break t;
}

你能帮我吗?

3 个答案:

答案 0 :(得分:2)

此构造称为“标记中断”,可用于同时中断多个嵌套循环。

引用Oracle tutorial中的示例:

>>> df_links_list.to_excel('file.xlsx', header=False, index=False)

在这里,未标记的中断(即简单地search: for (i = 0; i < arrayOfInts.length; i++) { for (j = 0; j < arrayOfInts[i].length; j++) { if (arrayOfInts[i][j] == searchfor) { foundIt = true; break search; } } } )只会终止内部循环,而break会立即终止两个循环。

有关辩论,请参见Is using a labeled break a good practice in Java?

答案 1 :(得分:0)

这只是一个label,您可以将其放置在任何地方,然后根据自己的条件可以“ break”或“ continue”。它可以在nested if-else中与for循环以中断多个循环。 这里的break t;只是意味着从labelled的{​​{1}}的while循环中爆发。

  

这对于打破嵌套循环很有用

答案 2 :(得分:0)

这称为“级别”,是其他语言中“ goto”的替代形式。尽管“ goto”在Java中是保留字,但在该语言中并未使用。 Java没有goto。但是,它的确有点像是与break和continue关键字相关联的跳转:关卡。

标签是一个标识符,后跟一个冒号,例如: label1:

在Java中使用标签的唯一位置就在迭代语句之前。在迭代之前放置标签的原因是,如果您要嵌套另一个迭代或其中的开关。这是因为break和continue关键字通常只会中断当前循环,但是当与标签一起使用时,它们会中断循环直至标签存在:

label1:
outer-iteration {
    inner-iteration {
    //...
    break; // (1)
    //...
    continue; // (2)
    //...
    continue label1; // (3)
    //...
    break label1; // (4)
    }
}

在(1)中,中断突破了内部迭代,而您最终进入了外部迭代。在(2)中,continue移回到内部迭代的开始。但是在(3)中,continue label1从内部迭代和外部迭代中脱颖而出,一直返回到label1。然后它实际上会继续迭代,但是从外部迭代开始。在(4)中,break标签1也会一直扩展到label 1,但不会重新进入迭代。实际上,它确实没有两次迭代。

希望得到帮助!