java 1.6 中的未知结构
Unknown structure in java 1.6
我正在处理一个遗留项目,我发现了类似的东西:
test:{
if(1 == 1) {
System.out.println("Oups");
break test;
}
System.out.println("Hello World");
}
我google它,但似乎没有什么符合这种结构的。
当然这部分代码编译&运行 ... ????
有人知道那是做什么的吗?
正如评论所说,这是一个 break 可以跳转到/跳出的标签。此处有更多信息:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
test:
称为标签。就像在循环中一样,break
跳转到块的末尾。标签用于定义中断跳转到的位置。请注意,范围的开始并不重要,前提是结束是您需要它的地方,所以实际上您标记的是结束而不是要中断的代码的开始。
虽然它有效,但标签通常会与 if
语句混淆,部分原因是它们很少使用,所以我会避免使用它们。如果你可以写一些带有标签的东西,你通常可以不使用方法来写它,或者在这种情况下使用 else
到 if
如果可以的话,即使使用带循环的标签也应该避免。
自 1.0 版以来,这已成为 Java 的一部分,并且在 Java 10 中仍受支持。
叫做label
。
它与 break
一起使用,在其他语言中执行类似于 goto
的操作。
您可以找到更多详细信息here
Jump-out 标签 (Tutorial):
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
我正在处理一个遗留项目,我发现了类似的东西:
test:{
if(1 == 1) {
System.out.println("Oups");
break test;
}
System.out.println("Hello World");
}
我google它,但似乎没有什么符合这种结构的。
当然这部分代码编译&运行 ... ????
有人知道那是做什么的吗?
正如评论所说,这是一个 break 可以跳转到/跳出的标签。此处有更多信息:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html
test:
称为标签。就像在循环中一样,break
跳转到块的末尾。标签用于定义中断跳转到的位置。请注意,范围的开始并不重要,前提是结束是您需要它的地方,所以实际上您标记的是结束而不是要中断的代码的开始。
虽然它有效,但标签通常会与 if
语句混淆,部分原因是它们很少使用,所以我会避免使用它们。如果你可以写一些带有标签的东西,你通常可以不使用方法来写它,或者在这种情况下使用 else
到 if
如果可以的话,即使使用带循环的标签也应该避免。
自 1.0 版以来,这已成为 Java 的一部分,并且在 Java 10 中仍受支持。
叫做label
。
它与 break
一起使用,在其他语言中执行类似于 goto
的操作。
您可以找到更多详细信息here
Jump-out 标签 (Tutorial):
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