Java中“goto”的使用
goto语句作为源码级上的跳转模糊了程序的流程控制。在Java中想要使用类似的机制需要使用continue和label
//文件名:temp
public class temp
{
public static void main(String[]args)
{
int i=0;
outer: //设置标签outer,冒号后不能放置其他语句
for(;true;)
{
inner: //设置标签inner,冒号后不能放置其他语句
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++;
break;
}
if(i==7)
{
System.out.println("continue outer");
i++;
continue outer;
}
if(i==8)
{
System.out.println("break outer");
break outer;
}
for(int k=0;k<5;k++)
if(k==3)
{
System.out.println("continue inner");
continue inner;
}
}
}
}
}
结果:
同样的方法适用于while
重点:Java中使用标签的唯一理由是因为有循环嵌套存在,而且想从多层嵌套中break或continue。
1)一般的continue会退回最内层循环的开头,并继续执行。
2)一般的break会中断并跳出循环。
3)带标签的continue会达到标签位置,并重新紧接该标签后的循环。
4)带标签的break会中断并跳出标签所指的循环。
[1] Bruce Eckel.Java编程思想[M].陈昊鹏,北京:机械工业出版社出版社.2007:71-73