比較表:
比較基準 | ブレーク | 持続する |
---|---|---|
仕事 | ループの残りの繰り返しの実行を終了します。 | ループの現在の反復のみを終了します。 |
中断/続行後の制御 | 'break'は、その 'break'を囲むループの終わりまでプログラムの制御を再開します。 | 'continue'は、 'continue'を囲むそのループの次の繰り返しまでプログラムの制御を再開します。 |
原因 | それはループの早期終了を引き起こします。 | それは次の繰り返しの早期実行を引き起こします。 |
継続 | 'break'はループの継続を止めます。 | 'continue'はループの継続を止めるのではなく、現在の繰り返しを止めるだけです。 |
その他の用途 | 'break'は 'switch'、 'label'と一緒に使用できます。 | 'continue'は 'switch'と 'labels'で実行することはできません。 |
休憩の定義
C ++では、breakには2つの使用法しかありません。すなわち、最初に「switch文の中のcaseの実行を終了させる」ために使用されます。 次に、「ループを終了し、ループに続く次のステートメントに制御を再開する」ことです。 しかし、Javaではbreakに最初の3つの用途があります。2番目のbreakを囲むループを終了するために2番目と3番目に前述のようにJavaは 'goto'文を提供しませんが、拡張形式のbreakを使用することができます。後藤の場所。
見てみましょう、 'break'のそれぞれの使い方について詳しく見てみましょう。
最初にswitch in caseの実行を終了するために使用します。 スイッチの中断は、それを囲むスイッチにのみ影響します。スイッチを囲むループには影響しません。
// C ++との関連で // C ++のコンテキストでスイッチインブレークを使用する。 switch(整数式){ケース1:..... ..... break; ケース2:..... .....休憩。 ケース3:..... .....休憩。 デフォルト: ....... ....... }
2番目の使用法。ループを強制的に終了させ、ループの次のステートメントから再開します。 breakステートメントがループの内側で見つかるとすぐに、そのループの本体に残っているコードを実行せずにそのループが直ちに終了し、プログラム制御はそのループの後に書かれた次のステートメントに到達します。
// Javaクラスへのコンテキストでループを終了するためにbreakを使用するmain_class {public static void main(string args []){(int i = 0; i <100; i ++){system.out.println( "i:" + i); もし(i == 10)ならば // 'if'の内側の条件として、制御が 'for'ループから出てくる。 system.out.println( "ループはここで中断します"); }}
breakはそれを囲むループからプログラムを終了させるだけです。 ネストループでブレークを使用すると、最も内側のループのみが分割され、外側のループには影響しません。
3番目の用途は、gotoの形式としてブレークを使用することです。 Javaは、問題なくgotoの形式としてbreakを使用します。 gotoは理解しにくい非構造化分岐を提供し、gotoはコンパイラの最適化を禁止しているので、Javaはgotoと似た拡張形式のbreakを使用し、一度に複数のブロックを終了してプログラムの制御を再開します。 break文で述べたラベル付きブロックの終わり。
宣言:
ラベルを破る。
ここで、「label」は特定のコードブロックの名前またはJavaの識別子であり、このラベル付きブロックはbreakステートメントを囲む必要があります。 ラベル付きbreakステートメントは、ネストしたループのセットから抜け出すために使用されます。 ラベル付きbreakステートメントが検出されると、コントロールはbreakステートメントで指定されているラベル付きブロックを終了します。
実際に見てみましょう。
// Javaクラスのコンテキスト内でgotoの形式としてbreakを使用する。public static void main(string args []){boolean t = true; 最初の{2番目の{3番目の{system.out.println( "この3番目のブロック"); if(t)が最初に中断します。 system.out.println( "この2番目のブロック"); system.out.println( "this first block"); system.out.println( "this main block"); // output:これは3番目のブロック、これはメインブロックです
このコードでは、コントロールが3番目のブロックに到達すると、そのprintステートメントが実行され、その後コントロールは 'if'ステートメントに再開します。それが満たされると、ラベル付きのbreakステートメントが実行されます。 breakが付いたラベルが最初なので、制御は最初にブロックの終わりの後に書かれたステートメント、すなわちprintステートメントであるメインブロックの中で再開され、それが実行されます。
継続の定義
breakはループの残りの繰り返しを終了し、コントロールをループから抜け出させるので、continueはここではbreakのように動作します。 continueステートメントは、現在の繰り返しのループ内の残りのコードの実行を停止し、そのループの次の繰り返しに制御を再開します。continueステートメントは、現在の繰り返しのコードをスキップして、ループの次の繰り返しに制御を渡します。
例でそれを理解しましょう。
// C ++のコンテキスト内でcontinueを使用します。 // 100まで偶数を出力します。class main_class {public static void main(string args []){for(int i = 0; i <100; i ++){if(i%2!= 0)続ける; // forループで次の繰り返しに制御を再開するsystem.out.println( "i:" + i); }}}
上記のプログラムでは、if文が満たされると、continue文が実行されます。これは、次のprint文の実行を許可せず、次のforループの繰り返しまで制御を再開します。 i = 1の場合、 'i'の奇数値に対してprintステートメントを実行せずに、 'if'条件が満たされてcontinueが実行され、制御はループの次の反復 'i = 2'に戻ります。 i = 2の場合、 'if'ステートメントは満足されません。 continueは実行されず、printステートメントは偶数である 'i'の値を出力します。
中断と続行の主な違い
- 基本的に、breakキーワードはループの残りの反復の残りを終了します。 一方、continueキーワードは、ループの現在の反復のみを終了します。
- breakキーワードが実行されると、プログラムの制御はループから抜け出し、ループの後の次のステートメントに戻ります。 continueキーワードの場合、プログラムの制御はループの次の繰り返しに戻ります。
- 上記ステップが終了すると、プログラムのブレーク制御の実行後にループから出ると、ブレークがループの早期終了を引き起こすことが明らかに理解される。 一方、継続は現在の繰り返しを終了させ、ループの次の繰り返しに再開するだけです。そして、continueはループの次の繰り返しの早期実行を引き起こすと言えます。
- breakキーワードは、実行後に残っているすべての反復を終了します。したがって、continueキーワードはループの実行を継続します。
- breakキーワードは、 "label"と同様に "switch"ステートメントと一緒に使用できますが、continueキーワードは、 "switch"と "label"と一緒には使用できません。
結論:
breakステートメントとcontinueステートメントはどちらも、制御をプログラムの別の部分に転送するジャンプステートメントです。 breakステートメントがコントロールをループから抜けさせるところでは、continueステートメントがコントロールをそのループの次の繰り返しに任せます。