在java中,有一个叫“标签”的说法,它的作用是跳出当前的多种循环,机制类似c语言中的goto。在java中没有goto语句,goto是java中的一个保留字,至今未使用。
标签的语法格式是:
lable:
outer-iteration
{
inner-iteration
{
break;//中断内部迭代回到外部迭代
continue;//继续内部迭代
continue lable;//中断内部迭代回到外部迭代
break lable;//中断外部迭代
}
}
说了这么多我们来看一段程序:
public class LableFor { public static void main(String[] args) { int i = 0; outerLable: for(;true;)//死循环 { innerLable: for(;i<10;i++) { System.out.println("i="+i); if(i==2) { System.out.println("continue"); continue; } if(i==3) { System.out.println("break"); i++;//otherwise i never gets incremented break; } if(i==7) { System.out.println("continue outerLable"); i++; continue outerLable; } if(i==8) { System.out.println("break outerLable"); break outerLable; } for(int k = 0;k<5;k++) { if(k==3) { System.out.println("continue innerLable"); continue innerLable; } } } } } }
结果如下:
i=0
continue innerLable
i=1
continue innerLable
i=2
continue
i=3
break
i=4
continue innerLable
i=5
continue innerLable
i=6
continue innerLable
i=7
continue outerLable
i=8
break outerLable
从结果中可以看出当i==8时程序成功中断了外层循环。
记住:
一般来说在java里使用标签的唯一理由是因为有循环嵌套存在,而且相从多层嵌套中break或continue。