很多初学Java的同学可能对break和continue跳出for循环有些疑惑,
其实简单的说就是:在多层嵌套for循环里面break是跳出包裹continue这一层for循环的所有循环,跳出之后不会继续执行continue这一层for循环的剩余循环
而continue是跳出包裹continue这一层for循环的这一次循环,跳出之后会继续执行continue这一层for循环的剩余循环
下面会用几小例子说明
//在内层循环时,当j==1时让它跳出j==1这次循环,之后继续执行j=2,3的循环
for(int i=0;i<3;i++){
System.out.println("外层for循环"+i);
for(int j=0;j<4;j++){
if(j==1)
continue;
// if(j==2)
// break;
System.out.println("内层循环"+j);
}
}
结果:外层for循环0
内层循环0
内层循环2
内层循环3
外层for循环1
内层循环0
内层循环2
内层循环3
外层for循环2
内层循环0
内层循环2
内层循环3
可以看得出来continue只是跳出了j==1那次内循环,并且会继续执行剩余的循环,现在我们把注解的break放出来看下结果
代码:
for(int i=0;i<3;i++){
System.out.println("外层for循环"+i);
for(int j=0;j<5;j++){
if(j==1)
continue;
if(j==3)
break;
System.out.println("内层循环"+j);
}
}
结果:
外层for循环0
内层循环0
内层循环2
外层for循环1
内层循环0
内层循环2
外层for循环2
内层循环0
内层循环2
从结果可以看出外层循环都执行了,而内层循环当道j==3,即跳出这层for循环不执行这层for循环剩余的for循环了
还可以通过设置标识跳到指定标识,如下:
loop:for(int m=0;m<2;m++){
System.out.println("m= "+m);
for(int i=0;i<3;i++){
System.out.println("外层for循环"+i);
for(int j=0;j<5;j++){
if(j==1)
continue;
if(j==3)
break loop;
System.out.println("内层循环"+j);
}
}
}
结果:
m= 0
外层for循环0
内层循环0
内层循环2
可以看出当j==3时跳到了指定位置