Java中的未知代码
我浏览了很多关于Java的问题,发现了一些有趣的代码。 考虑下面的代码:Java中的未知代码,java,class,for-loop,methods,iterator,Java,Class,For Loop,Methods,Iterator,我浏览了很多关于Java的问题,发现了一些有趣的代码。 考虑下面的代码: class A { public static void main(String[] args) { int n = 13; found: { for (int x : new int[]{2,3,4,5,6,7,8,9,10,11,12}) if (n % x == 0) { System.out.println("" + n + "
class A {
public static void main(String[] args) {
int n = 13;
found: {
for (int x : new int[]{2,3,4,5,6,7,8,9,10,11,12})
if (n % x == 0) {
System.out.println("" + n + " equals " + x + "*" + (n/x));
break found;
}
System.out.println("" + n + " is a prime number");
}
}
}
请记住,我不是Java方面的老手,也绝不是专业程序员(所以请指出我明显缺少的任何东西)。现在,我很好奇这句话的意思是什么:
found: {
我的第一个观察结果是它设置了一个变量,但经过进一步的检查,我意识到我显然不是。那么它在做什么呢?这在Java中有一个名称吗?它是一个标签,就像过去那句甜言蜜语一样。我从来没有在实践中看到过这种说法。这是一个标签,就像过去几天的甜言蜜语。我从未在实践中看到过这种说法。这是一种有标签的说法。说(部分) 语句可能有标签前缀
LabeledStatement:
Identifier : Statement
LabeledStatementNoShortIf:
Identifier : StatementNoShortIf
标识符
被声明为立即包含语句的标签
与C和C++不同,java编程语言没有<代码> Goto 语句;标识符语句标签与出现在标记语句中任何位置的
break
()或continue
()语句一起使用
它通常与嵌套循环一起使用,从内部循环中断开
out: for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (j == 1) {
break out;
}
}
}
out:for(int i=0;i<100;i++){
对于(int j=0;j<100;j++){
如果(j==1){
爆发
}
}
}
这是一个有标签的语句。说(部分)
语句可能有标签前缀
LabeledStatement:
Identifier : Statement
LabeledStatementNoShortIf:
Identifier : StatementNoShortIf
标识符
被声明为立即包含语句的标签
与C和C++不同,java编程语言没有<代码> Goto 语句;标识符语句标签与出现在标记语句中任何位置的
break
()或continue
()语句一起使用
它通常与嵌套循环一起使用,从内部循环中断开
out: for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (j == 1) {
break out;
}
}
}
out:for(int i=0;i<100;i++){
对于(int j=0;j<100;j++){
如果(j==1){
爆发
}
}
}
它的行为就像一个转到,下面是一些示例:
for (int i = 0; i < 10; i++) {
System.out.println(i);
if(i == 5)
break;
}
然后
它的行为就像一个GOTO,下面是一些示例:
for (int i = 0; i < 10; i++) {
System.out.println(i);
if(i == 5)
break;
}
然后
找到的
零件称为标签。你看到有一份声明了吗
break found;
代码后面?这就是你使用标签的地方<代码>已找到
正在标记for循环。下次,当你想说for循环时,说found
。因此,break
语句的意思是:中断for循环
你说,“为什么我不能写break;
?”。有时我们使用嵌套循环。在这些情况下,标签很重要。如果你想从内循环中分离出外循环,你不能只写一个简单的break代码>。因为它只会破坏内部循环,而不会破坏外部循环。当外部循环的迭代完成时,内部循环将再次执行。您可以将标签添加到外部循环,可以将其称为outer
,并写入break outer代码>来自内部循环
out: for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (j == 1) {
break out;
}
}
}
但是我从来没有写过任何使用这个的代码。我从不使用标签终止循环。所以可能有很多程序员不知道这个特性 找到的零件称为标签。你看到有一份声明了吗
break found;
代码后面?这就是你使用标签的地方<代码>已找到
正在标记for循环。下次,当你想说for循环时,说found
。因此,break
语句的意思是:中断for循环
你说,“为什么我不能写break;
?”。有时我们使用嵌套循环。在这些情况下,标签很重要。如果你想从内循环中分离出外循环,你不能只写一个简单的break代码>。因为它只会破坏内部循环,而不会破坏外部循环。当外部循环的迭代完成时,内部循环将再次执行。您可以将标签添加到外部循环,可以将其称为outer
,并写入break outer代码>来自内部循环
out: for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (j == 1) {
break out;
}
}
}
但是我从来没有写过任何使用这个的代码。我从不使用标签终止循环。所以可能有很多程序员不知道这个特性 Found是循环的别名break-found
表示停止循环。found是循环的别名<代码>断开查找
意味着停止循环。我有。要控制嵌套循环终止。@ElliottFrisch我最感兴趣的是它所使用的上下文,请注意分享:D是一个例子(post-hoc ergo-propter-hoc)。我有。要控制嵌套循环终止。@ElliottFrisch我最感兴趣的是它使用的上下文,请注意分享:D是一个例子(post hoc ergo-propter hoc)。我很困惑,你能像方法一样调用标签吗?当j
是1
时,哪个循环应该停止。或者继续
,如果我们尝试这样做的话。您可以使用标签来控制您继续
或中断
的循环。通常,当您可以终止当前上下文并继续外部上下文时。Frisch您是否可以使用嵌套的for循环
,内部包含break
语句?与嵌套循环相比,使用标签有什么好处?@Matthewacon只会破坏内部循环。上面的示例终止外部循环。打破内部循环会如何做到这一点?再次阅读JLS引用。我很困惑,你能像方法一样调用标签吗?当j
为1
时,哪个循环应该停止。或者继续
,如果我们尝试这样做的话。您可以使用标签来控制您继续
或中断
的循环。通常,当您可以终止当前上下文并继续外部上下文时。Frisch您是否可以使用嵌套的for循环
,内部包含break
语句?什么是adv