由关键字goto引申到了Java标签,貌似当初培训的时候老师讲过一嘴标签,到网上查了下,决定记下来.这是一个很好的理解Java标签的例子,经典给力(淘来的)希望对大家有帮助
Java的标签在双循环或者多循环嵌套的情况下配合break和continue才能起到作用!
Java标签使用的举例:
int i = 0;
System.out.println("label1");
label1: for (int k = 0; k < 5; k++) {
i++;
if (k == 2) {
break label1;
}
System.out.println(i);
}
输出结果:label1
1
2
这说明当k=2时,执行了break语句,跳转到了label1标签处,但是并没有在进入这个for语句块。
int j = 0;
System.out.println("label2");
label2: for (int k = 0; k < 5; k++) {
j++;
if (k == 2) {
continue label2;
}
System.out.println(j);
}
输出结果是:
label2
1
2
4
5
这说明当k=2时,执行了continue语句,跳出了循环没有执行println语句,然后从label2标签的地方再次进入for语句块。
上面这两种情况的结果与不使用标签的,只使用break和continue的情况是相同的。因而体现不出标签的作用。
System.out.println("label3");
int h = 0;
label3: for (int k = 0; k < 5; k++) {
System.out.println("label3第一层");
for (int m = 0; m < 5; m++) {
System.out.println("label3第二层");
h++;
if (m == 2) {
break label3;
}
System.out.println(h);
}
}
输出结果是:
label3
label3 第一层
label3 第二层
1
label3 第二层
2
label3 第二层
这说明当k=m时,执行了break语句,跳转到了label3标签处,但是并没有在进入这个for语句块。
System.out.println("label4");
int l = 0;
label4: for (int k = 0; k < 5; k++) {
System.out.println("label4第一层");
for (int m = 0; m < 5; m++) {
System.out.println("label4第二层");
l++;
if (m == 2) {
continue label4;
}
System.out.println(l);
}
}
输出结果是:
label4
label4 第一层
label4 第二层
1
label4 第二层
2
label4 第二层
label4 第一层
label4 第二层
4
label4 第二层
5
label4 第二层
label4 第一层
label4 第二层
7
label4 第二层
8
label4 第二层
label4 第一层
label4 第二层
10
label4 第二层
11
label4 第二层
label4 第一层
label4 第二层
13
label4 第二层
14
label4 第二层
这说明当m=2时,执行了continue语句,跳出了循环没有执行println语句,然后从label3标签的地方再次进入for语句块。
当有多从循环的时候,程序只想跳出内层循环,而不跳出外层循环的时候就可以使用这样的break和continue标签了。这种嵌套循环也是适合while语句的。
当然你也可以写出这样的代码
label5:{
int b=0;
if(tag){
break label5;
}
......
}
用以跳过下面省略了的代码,当然这样的写法完全可以使用if else代替。
下面是对这个用法的总结:
(1) 简单的一个continue会退回最内层循环的开头(顶部),并继续执行。
(2) 带有标签的continue会到达标签的位置,并重新进入紧接在那个标签后面的循环
(3) break会中断当前循环,并移离当前标签的末尾。
(4) 带标签的break会中断当前循环,并移离由那个标签指示的循环的末尾