所以我见过许多情况,其中标签被用于for循环,特别是双嵌套循环。
这是唯一可以使用它们的情况吗?还是有其他我不知道的常见用途。我觉得它是一个我从未使用过的java工具!
答案 0 :(得分:5)
可以说,标记循环是唯一可以使用标记语句的有用方式。
允许 标记Java中的任何语句,但它们使用的唯一方法是作为(带标签的)break
或continue
语句的目标。< / p>
通常的建议适用:只是因为你可以做某事并不意味着你应该这样做。不要使用标签作为有趣的“评论”(是的,我已经看到这样做)。不要写双重嵌套循环只是为了展示你打破或继续外循环的能力。这些天我们倾向于支持适用于整个序列的操作,从而减少了对标记break
和continue
s的一些用法。与往常一样,旨在提高可读性和简洁性。也就是说,像输出 Java源代码的解析器生成器这样的工具很可能会大量使用带标签的语句,即使人类程序员很少这样做。
答案 1 :(得分:2)
标记的中断和继续基本上是goto语句。
来自https://stackoverflow.com/a/6373262/895245:转发转到:
label: {
// do stuff
if (check) break label;
// do more stuff
}
向后转到
label: do {
// do stuff
if (check) continue label;
// do more stuff
break label;
} while(true);
因此,这个问题归结为关于goto语句何时合法的永无止境的争论,例如:Examples of good gotos in C or C++,其中增加的事实是上面的后向goto成语甚至比直接GOTO更丑。