C++和Java break語句和continue語句帶標號和不帶標號的比較__Java

來源:互聯網
上載者:User

今天在複習Java的時候,發現一個Java的break語句和continue語句和C++/C語言裡面的有點不同。

首先來介紹一下break和continue語句

break 和continue 語句都能夠跳過部分代碼。

可以在switch 語句或任何迴圈中使用break語句,使程式跳到switch或迴圈後面的語句處執行。

continue 語句用於迴圈中,讓程式跳過迴圈中餘下的代碼,並開始新一輪迴圈。

首先在兩種語言裡面break和continue的基本用法都是一致的。

我們這裡主要說說他們的不同點

java中的break包含帶標號的break語句和不帶標號的break語句兩種。

不帶標號:只是跳出當前break語句所在的迴圈,用法和C++的break一樣。

而帶標號:不僅能跳出當前break所在的迴圈,還可以跳出標號所指的迴圈。

而在C++裡面似乎不能帶標號。

下面我們用例子來說明:

我們來看看Java帶標號的例子:

package testonr;public class One {public static void main(String[] args) {outer:for(int i = 0; i < 10; i++){System.out.print("i="+i+"\t,j=");for(int j = 0; j <= i; j++){System.out.print(j+"\t");if(i+j == 16){System.out.print("迴圈中斷。");break outer;}}System.out.println("外來迴圈最後一句。");}}}
輸入結果:


同樣的代碼在C++中報錯:



那麼我們去掉標號,試試。

#include <iostream>using namespace std;void main(){ for (int i = 0; i < 10; i++){cout << "i=" << i << "\t,j=";for (int j = 0; j <= i; j++){cout << j << "\t";if (i + j == 16){cout << "迴圈中斷。";break;}}cout << "外層迴圈最後一句" << endl;}}

輸出結果:



從圖中對比可以看出,Java裡面的 帶標號的break語句 在跳出當前break語句所在的迴圈外,還跳出了標號指定的迴圈語句。

而C++裡面break 是不可以和Java一樣直接跟標號的,所以只能跳出break語句所在的迴圈,而無法跳出其他的迴圈,所以我們可以在C++的輸出語句裡面看到比Java多輸出了一行(即Java跳出的標號所指的大迴圈,而C++並沒有跳出)。


再來看看continue語句:

java帶標號:

package testonr;public class One {public static void main(String[] args) {System.out.println("100內的素數為:");loop:for(int i = 2; i < 100; i++){for(int j = 2; j < i/2; j++){if(i%j == 0)continue loop;}System.out.print(" "+i);}}}

輸出結果:


C++還是一樣報錯:



我們去掉contiune後面跟的標號試試:

#include <iostream>using namespace std;void main(){ for (int i = 2; i < 100; i++){for (int j = 2; j < i/2; j++){if (i % j == 0)continue;}cout << " " << i;}}

輸出結果:



這裡我們就能看出比較大的差異。

先來分析一下Java的代碼:

此處的loop為外迴圈的標號,當執行到if(i%j==0)的時候,如果if條件成立,就執行contiune,程式執行流程不僅跳出了當前continue所在的迴圈(小迴圈)還跳出標號loop標註的本次迴圈,因為只要條件成立就表示它不是素數,也就不需要輸出,此處直接跳過。

而C++的語句裡面,執行到if(i%j==0)的時候,如果條件成立執行continue,程式只跳出了當前continue所在的迴圈(內迴圈),而沒有跳出大迴圈,所以,無論if的條件成立與否都會執行大迴圈裡面的輸出語句。


總結:小弟作為一個初學者不是為了證明某一種語言的孰優孰劣,而是單純的討論這個無意中發現的差別,如果有錯誤的地方,希望各位大神歡迎指出,小弟感激不盡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.