continue和break都是跳转语句,但二者有着很本质的区别:break就是简单的停止本次及以后的循环,而continue是本次的循环而进行下一次循环。看下面的例子:
public class Test02{
public static void main(String args[]){
for(int i=1;i<=9;i++){
for(int j=i;j<=9;j++){
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println(";");
}
}
}
结果:
下面我用break控制循环:
public class Test02{
public static void main(String args[]){
for(int i=1;i<=9;i++){
for(int j=i;j<=9;j++){
if(j==5){
break;
}
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println(";");
}
}
}
结果:
我再用continue控制循环:
public class Test02{
public static void main(String args[]){
for(int i=1;i<=9;i++){
for(int j=i;j<=9;j++){
if(j==5){
continue;
}
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println(";");
}
}
}
结果:
比较两次结果,我们很容易就发现,当j=5时,break是跳出第二层循环,j=6,j=7....的循环也不复存在,而continue只是跳出j=5的情况,而j=6,j=7....会继续执行。
continue和break还可以配合标签使用,来控制跳出的地方。看下面的例子:
public class Test02{
public static void main(String args[]){
outer:
for(int i=1;i<=9;i++){
for(int j=i;j<=9;j++){
if(j==5){
break outer;
}
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println(";");
}
}
}
结果:
当j=5的时候,break直接跳到outer的位置,也就是最外层循环,不进行下面的输出。
public class Test02{
public static void main(String args[]){
outer:
for(int i=1;i<=9;i++){
for(int j=i;j<=9;j++){
if(j==5){
continue outer;
}
System.out.print(i+"*"+j+"="+i*j+" ");
}
System.out.println(";");
}
}
}
当j=5的时候,continue跳到outer的位置,但并不终止下次循环,而进行i=2的循环,以此反复。