标记为Break并标记为Continue功能是否相同?

时间:2014-10-16 03:41:24

标签: java

我确信正常中断和继续的功能彼此不同。但是当使用标签时,这些功能似乎相同。在java语言中支持这些含糊不清的语句是不是很模糊?

label1:
for(int i=0; i<=m; i++)
{
    for(int j=0; j<=n; j++)
    {
        System.out.println("My Message one");

        break label1;

        System.out.println("My Message two");
    }
}

label2:
for(int i=0; i<=m; i++)
{
    for(int j=0; j<=n; j++)
    {
        System.out.println("My Message one");

        continue label2;

        System.out.println("My Message two");
    }
}

2 个答案:

答案 0 :(得分:3)

不,他们不一样。

标记的中断立即退出指定的循环。标记为“继续”结束当前迭代,但不会退出循环,除非其保护条件失败。这与常规break和continue语句完全相似。

break label1;

这会立即退出外循环。

continue label2;

这退出内循环并进入外循环的下一次迭代。

答案 1 :(得分:0)

没有。它们的功能完全不同。

StringBuilder sb1 = new StringBuilder();
test1: for (int i = 0; i < 100; i++) {
    sb1.append("test: " + i);
    for (int j = i; j < 100; j++) {
        if (j == 10) {
            break test1;
        }
    }
}
StringBuilder sb2 = new StringBuilder();
test2: for (int i = 0; i < 100; i++) {
    sb2.append("test: " + i);
    for (int j = i; j < 100; j++) {
        if (j == 10) {
            continue test2;
        }
    }
}
System.out.println(sb1.toString().equals(sb2.toString()));

输出

false