久々にプログラミング関係の記事になります。今回は類似した文についてです。
処理を中断するために用いられるbreakとcontinueですが、実際にに動かしてみると大きな違いがあります。
できるだけ分かりやすく書いていきたいと思いますので、ご容赦ください。
continue文は、処理の最中に、変数がある条件の対象になった時にループを完全には抜けずにいったんそのループの最初に戻ります。
class howToCon{ public static void main(String args[]){ howToCon htc = new howToCon(); htc.test1(); } void test1(){ int num = 0; for(int i=0;i<5;i++){ num += 1; if(num % 2 == 0){ System.out.println("Bom!!"); continue; }else{ System.out.println(num); } System.out.println(num); } } }
上記の図では、if文で2で割った余りが0だった場合にcontinue文で抜けてBom!!と吐くようになっており、17行目のsystem.out.printlnまで行き届かずに中断し、次のループ処理をします。
処理結果を見ていきましょう。
for文処理を抜けずに続けてループしているのが分かりますね。
対してbreak分は、値がある条件の対象になった場合にそのスコープ自体から抜け出します、つまりループをやめて次の処理り移りましょうという意味になります。
さきほどのコードをbreakに変えてビルドしてみましょう。
class howToCon{ public static void main(String args[]){ howToCon htc = new howToCon(); htc.test1(); } void test1(){ int num = 0; for(int i=0;i<5;i++){ num += 1; if(num % 2 == 0){ System.out.println("Bom!!"); break; }else{ System.out.println(num); } } } }
結果は・・・
変数numの値が2になって余りが0になるという条件に引っかかったので、この時点でfor文内のスコープを抜けて終了していますね。
このように、どちらも強制的にあるタイミングの処理を終了するという意味では同じですが、実際の処理の結果は全く違うことが分かります。似てるなと思った関数や文は積極的に使ってみてください。その結果をくみ取ってみると、使いかたが分かってきて更にプログラミングの知識の幅が広がってくると思います。それでは!