1. 程式人生 > >for迴圈裡面break和continue的區別

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時跳到了指定位置