1. 程式人生 > >深度解析continue,break和return

深度解析continue,break和return

continue,break和return是Java中的關鍵字,在流程控制中使用頻率較高。

在使用中,經常會有同學在使用中產生混淆,從而一系列bug。

在這裡,我通過Java程式設計為大家解析三者在實際使用中的區別。

1.continue

通常出現在程式迴圈控制結構中,表示結束本次迴圈,若後續還有迴圈,則繼續進行後面的迴圈。舉例:

class Demo1 {//宣告一個類Demo1
  public static void main(String[] args) {//入口函式
    for(int i=0;i<5;i++){//for迴圈
      if(i==3){//當i=3時,僅結束本次迴圈,但是for迴圈剩餘次數並未結束
        continue;
      }
    System.out.println(i);//在控制檯列印輸出迴圈遍歷的數字
    }
    System.out.println("for迴圈之後");
  }
}

在控制檯列印輸出如下:  

0
1
2
4
for迴圈之後

可見,當i=3時,僅結束本次迴圈,for迴圈剩下的次數並未結束;同時,for迴圈之後的語句可以正常執行,比如控制檯列印輸出“for迴圈之後”。

我們再來看break。

2.break

我們還用上面的程式碼,不同的是將continue改為break。  

class Demo2 {//宣告一個類Demo2
  public static void main(String[] args) {//入口函式
    for(int i=0;i<5;i++){//for迴圈
      if(i==3){//當i=3時,結束for迴圈
        break;
      }
    System.out.println(i);//在控制檯列印輸出迴圈遍歷的數字
    }
    System.out.println("for迴圈之後");
  }
}

  控制檯列印輸出結果是:  

0
1
2
for迴圈之後

可見,當i=3時,for迴圈結束,不再執行剩餘的迴圈,同時繼續執行for迴圈之後的語句(如列印輸出“for迴圈之後”)。

上面是一層or迴圈,如果在兩層for迴圈中使用break會怎樣呢?請看下面的程式碼: 

public class Demo3 {
  public static void main(String[] args) {//入口函式
    for(int i=0;i<3;i++){//外層for迴圈
      for(int j=0;j<5;j++){//內層for迴圈
        if(j==4){//當j=3時,結束內層for迴圈
          break;
        }
        System.out.println(j);//在控制檯列印輸出迴圈遍歷的數字
      }
      System.out.println("*********");//一輪內層for迴圈結束時的分隔符
    }
    System.out.println("for迴圈之後");
  }
}

 控制檯列印輸出結果是:

0
1
2
3
*********
0
1
2
3
*********
0
1
2
3
*********
for迴圈之後

  可見,在兩層for迴圈中,break只是結束了所在層的for迴圈(即內層for迴圈),並未結束外層for迴圈。那麼,改為return會怎樣呢?

  3.return

  我們先來看下面的程式碼:  

class Demo4 {//宣告一個類Demo4
  public static void main(String[] args) {//入口函式
    for(int i=0;i<3;i++){//外層for迴圈
      for(int j=0;j<5;j++){//內層for迴圈
        if(j==4){//當i=3時,結束方法
          return;
        }
        System.out.println(j);//在控制檯列印輸出迴圈遍歷的數字
      }
      System.out.println("*********");//一輪內層for迴圈結束時的分隔符
    }
    System.out.println("for迴圈之後");
  }
}

控制檯列印輸出為:  

0
1
2
3

可見,使用return後,整個方法結束。

最後做下總結:

在迴圈控制語句中,continue僅結束本次迴圈;break結束本重迴圈;return結束當前方法。

希望能幫到您!