请解释标记语句的用法

是否打破并继续使用Java中标记语句的唯一用途? 您何时在程序中使用了Labeled Statements? 很抱歉,代码段已被删除。我正在分裂这个问题     
已邀请:
JLS 14.7标记语句 (为清晰起见编辑)   语句可能有标签前缀(标识符:语句)。标识符被声明为直接包含的Statement的标签。      与C和C ++不同,Java编程语言没有
goto
语句;标识符语句标签与出现在标签语句中任何位置的
break
(§14.15)或
continue
(§14.16)语句一起使用。 所以JLS很清楚标签与
break
continue
一起使用,而Java编程语言的其他语法元素也没有使用它。 严格来说,
break
continue
,无论是否标记,都是绝对必要的。它们总是可以写出代码。然而,习惯使用它们会导致更易读的代码。 这是一个说明性的例子:给定一个
int[]
,我们希望: 在
1
上打印
"One (1)"
2
上打印
"Two (2)"
0
上打印
"Zero "
立即停止处理任何其他号码
int[] arr = { 1, 2, 0, 1, -1, 0, 2 };
loop:
for (int num : arr) {
    switch (num) {
    case 1:
        System.out.print("One ");
        break;
    case 2:
        System.out.print("Two ");
        break;
    case 0:
        System.out.print("Zero ");
        continue loop;
    default:
        break loop;
    }
    System.out.print("(" + num + ") ");
}
// prints "One (1) Two (2) Zero One (1) "
在这里我们看到: 不同的数字在
switch
中处理
switch
中未标记的
break
用于避免案件之间的“掉落” 标签
continue loop;
用于跳过
case 0:
的后处理(此处不需要标签) 标记
break loop;
用于终止
default:
上的循环(此处需要标签;否则为
switch break
) 所以标记为
break
/
continue
也可以在嵌套循环之外使用;它可以在
switch
嵌套在循环中时使用。更一般地说,当有可能存在多个
break
/
continue
目标时使用它,并且您想要选择一个不立即包含
break
/
continue
语句的目标。 这是另一个例子:
    morningRoutine: {
        phase1: eatBreakfast();
        if (grumpy) break morningRoutine;
        phase2: kissWife();
        phase3: hugChildren();
    }
    http://stackoverflow.com is the best website ever!
这是标记为
break
的另一种情况,不是在迭代语句中使用,而是在简单的块语句中使用。有人可能会说这些标签会带来更好的可读性;这一点是主观的。 不,最后一行不会给出编译时错误。它实际上受Java Puzzlers Puzzle 22:Dupe of URL的启发。不幸的是,这个谜题并没有更深入地“正确”使用标记语句。     
是的,
break
continue
是Java中标记语句的唯一两种用法。 (Java没有
goto
声明。) 您可以使用标签来突破嵌套循环。
outer:
    for (int i = 0; i < 5; i++) {    
        for (int j = 0; j < 5; j++) {
            System.out.println("Hello");
            continue outer;
        } // end of inner loop
        System.out.println("outer"); // Never prints
    }
System.out.println("Good-Bye");
当你
continue
回到
outer
标签时,你正在跳过内循环和外循环的其余部分,包括print语句。     
search:
    for (i = 0; i < arrayOfInts.length; i++) {
        for (j = 0; j < arrayOfInts[i].length; j++) {
            if (arrayOfInts[i][j] == searchfor) {
                foundIt = true;
                break search;
            }
        }
    }
    

要回复问题请先登录注册