我正在做一个遗留项目,我发现了类似的东西:
test:{
if(1 == 1) {
System.out.println("Oups");
break test;
}
System.out.println("Hello World");
}
我用谷歌搜索,但似乎没有什么与这种结构相匹配。
当然,这部分代码编译运行... ????
有人知道那是做什么的吗?
我正在做一个遗留项目,我发现了类似的东西:
test:{
if(1 == 1) {
System.out.println("Oups");
break test;
}
System.out.println("Hello World");
}
我用谷歌搜索,但似乎没有什么与这种结构相匹配。
当然,这部分代码编译运行... ????
有人知道那是做什么的吗?
test:
称为标签。就像在循环中一样,break
跳转到块的末尾。标签用于定义中断跳转到的位置。请注意,范围的开头并不重要,前提是结尾是您需要的地方,因此您实际上是在标记结尾而不是要中断的代码的开头。
虽然它有效,但标签通常与if
语句太混淆,部分原因是它们很少使用,所以我会避免它们。如果你可以用标签写一些东西,你通常可以不使用方法来写它,或者在这种情况下使用一个else
toif
如果可以的话,即使使用带有循环的标签也应该避免。
自 1.0 版以来,这一直是 Java 的一部分,并且在 Java 10 中仍受支持。
跳出标签(教程):
label: for (int i = 0; i < x; i++) {
for (int j = 0; j < i; j++) {
if (something(i, j)) break label; // jumps out of the i loop
}
}
// i.e. jumps to here
正如评论已经说过的,这是一个 break 可以跳到/跳出的标签。更多信息在这里:https ://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html