在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。