for迴圈裡面break和continue的區別
很多初學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時跳到了指定位置