可以在for循环之外适当地使用java标签吗?

时间:2013-05-15 01:36:22

标签: java for-loop label

所以我见过许多情况,其中标签被用于for循环,特别是双嵌套循环。

这是唯一可以使用它们的情况吗?还是有其他我不知道的常见用途。我觉得它是一个我从未使用过的java工具!

2 个答案:

答案 0 :(得分:5)

可以说,标记循环是唯一可以使用标记语句的有用方式。

允许 标记Java中的任何语句,但它们使用的唯一方法是作为(带标签的)breakcontinue语句的目标。< / p>

通常的建议适用:只是因为你可以做某事并不意味着你应该这样做。不要使用标签作为有趣的“评论”(是的,我已经看到这样做)。不要写双重嵌套循环只是为了展示你打破或继续外循环的能力。这些天我们倾向于支持适用于整个序列的操作,从而减少了对标记breakcontinue 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更丑。