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 + "

我浏览了很多关于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 + " 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