HelloWorldを学習した後に、何を学ぶべきか迷っている方もいると思いますが、まずは基本的な制御構文を学習することをおすすめします。
制御構文とは、if文やfor文のことですが、プログラミングではどの言語においても、この2つの制御構文が超重要事項です。
そこで本記事では、制御構文の学習第3弾として、Javaにおける制御構文をまとめます。
制御構文とは何かという説明については、以下の記事をご参照ください。
書き方を忘れてしまった方の復習としても、お役に立てていただければと思います。
Javaの分岐
Javaの分岐には、if文とswitch文があります。
if文
if文の基本的な構文は以下となります。
if ( 条件判定A ) { 条件Aが成立した場合の処理 } else if ( 条件判定B ) { 条件Bが成立した場合の処理 } else { 条件Aにも条件Bにも成立しない場合の処理 }
条件A→条件Bという順番で判定します。
条件Aにも条件Bにも当てはまる場合には、条件Aが成立した場合の処理が行われます。
その場合、条件Bの判定(else if文の実行)は行われません。
次に例文です。(変数aとbには数値が入っている前提です)
if ( a < b ) { System.out.println("a より b の方が大きい"); } else if ( a > b ) { System.out.println("b より a の方が大きい"); } else { System.out.println("a と b は同一"); }
switch文
switch文は、if文をわかりやすい表現に変更する構文のようなものです。
基本的な構文は以下となります。
switch (式) { case 定数A: 式の評価結果が定数Aと一致する場合の処理 break; case 定数B: 式の評価結果が定数Bと一致する場合の処理 break; default: 式の評価結果が定数Aとも定数Bとも一致しない場合の処理 }
式には、int型やInteger型の数値の他、String型、enum型などを指定することができます。
また、break は、そこに実行が到達したらswitch文を抜けることを意味します。
break がない場合は、定数Aの評価、定数Bの評価、default をそれぞれ実行します。
次に例文です。(変数sには文字列が入っている前提です)
switch (s) { case "Java": System.out.println(s); // 標準出力に「Java」と表示される break; case "Ruby": System.out.println(s); // 標準出力に「Ruby」と表示される break; default: System.out.println(s); // 標準出力に「Java」「Ruby」でない変数sに入っている文字列が表示される }
Javaの繰返し
Javaの繰返しには、while文、do-while文、for文、for-each文の4種類があります。
while文
while文は条件式の結果がtrueに評価されている間、while文の中の処理を繰返し実行します。
基本的な構文は以下のとおりです。
while (条件式) { 繰返し実行する処理 }
最初に条件式を評価するため、初期状態で条件式の結果がfalseとなる場合は、一度も繰返し処理が実行されません。
また、繰返し処理が最後まで到達すると、再度条件式を評価します。
条件式の結果がtrueの間、繰返し処理を実行するため、条件式がずっとtrueのまま無限ループとなってしまわないように注意が必要です。
次に例文です。
i = 0; while (i < 10) { System.out.println(i); i++; }
do-while文
while文は最初に条件式を評価するため、状況によっては1度も繰返し処理が実行されない場合がありますが、最低1回は繰返し処理を実行したい場合に用いるのがdo-while文です。
基本的な構文は以下のとおりです。
do { 繰返し実行する処理 } while (条件式);
この構文では条件式は繰返し処理が実行された最後に評価され、評価結果がtrueの場合は再度繰返し処理を実行し、falseの場合は繰返し処理を抜けます。
例文は以下のとおりです。
i = 0; do { System.out.println(i); i++; } while (i < 10);
for文
for文は初期化式、条件式、加算式を並べて書きます。
加算式を必ず書く必要があるので、無限ループになる可能性が低いこともあり、僕個人としてはwhile文よりもfor文を使う方をおすすめします。
基本的な構文は以下のとおりです。
for (初期化式; 条件式; 加算式) { 繰返し実行する処理 }
初期化式、条件式の評価、for文内の繰返し処理、加算式の順に処理が実行されていきます。
例文は以下のとおりです。
for (int i = 0; i < 10; i++) { System.out.println(i); }
for-each文
for-each文は、配列リストなどのコレクションの要素に対して、繰返し処理を行います。
拡張for文と呼ばれることもあります。
基本的な構文は以下のとおりです。
for (変数型 変数名 : コレクション) { 繰返し実行する処理 }
例文は以下のとおりです。
String[] arr = {"Java", "Ruby", "Go"}; for (String s : arr) { System.out.println(s); // 「Java」、「Ruby」、「Go」が表示される }
配列やリストの繰返しにfor文を用いると、終了条件に誤りがあった場合に、配列を超えたインデックスを使って参照してしまうなどにより不具合の原因となってしまう場合があります。
一方で、このfor-each文では、終了条件をプログラミングしなくても自動的にコレクションをすべて繰返してくれるので便利です。
繰返し処理はまずfor文とfor-each文を覚えて、Stream APIを使えるようになろう
繰り返し処理はfor文を覚えてしまえば、他の記述方法の代替となります。
ですので、まずはfor文を学習することが大切なのですが、それよりも強力なのがStream APIです。
やや難しい内容になるので、今回は割愛しますが、コレクションの繰返し処理を簡単にかつわかりやすく記述することができます。
今回はJavaの制御構文として分岐処理と繰返し処理をいくつか紹介しました。
お役に立てば幸いです。
コメント