今回はfor文と拡張for文の使い方についてまとめます。
それぞれ両方とも繰り返し処理に良く使われる文です。また、配列での使い分けについてもそれぞれの特徴から考えていきます。
for文の使い方
for文は指定した終了条件を満たすまで処理を繰り返します。
for文の書式
for文の書式は以下の通りです。
//for文の書式例 for(初期化文; 条件文; 変化文){ //繰り返し処理 }
初期化文はfor文が実行されるときに最初の一回だけ実行されます。
条件文は繰り返し処理を行う条件を指定しています。条件文がtureなら繰り返し処理を実行し、falseなら繰り返し処理を終了します。
更新文は繰り返し処理が実行された後変数を変化させるのに使います。更新文が実行された後に条件文を評価しています。
また、初期化文、条件文、更新文は省略することができます。条件文を省略するにはbreak文を使う必要があります。
for文の使用例【サンプルコード・出力結果】
実際にサンプルコードを動かしてみましょう。
サンプルコードを以下に示します。
class ForTest { public static void main(String[] args) { // 0から10まで表示させる処理を繰り返す for (int i = 0; i <= 10; i++) { System.out.print(i + " "); } System.out.println(""); //初期化文条件文更新文は省略することができる int i = 0; for (; i <= 10;) { System.out.print(i + " "); i++; } System.out.println(""); } }
サンプルコードの出力結果を以下に示します。
0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10
同じ結果が返ってくることが分かります。
拡張for文(for-each文)の使い方
拡張for文は配列やコレクションの要素を順番に取り出します。
配列やコレクションの中身を取り出す際、for文よりコンパクトに記述することができます。
拡張for文の書式
拡張for文の書式は以下の通りです。
//拡張for文の書式例 for (データ型 変数名: 配列(コレクション)名){ //繰り返しの中処理 }
指定した配列(コレクション)から要素一つずつ取り出し、変数に入れてから繰り返し処理を実行します。処理が終わったら次の要素を取り出して処理することを繰り返します。
拡張for文の使用例【サンプルコード・出力結果】
実際にサンプルコードを動かしてみましょう。
サンプルコードを以下に示します。
public class ForeachTest { public static void main(String[] args) { // numに123,456,789を格納する String[] num = { "123", "456", "789" }; // 拡張for文でnumを順番にstrに入れて出力させる for (String str : num) { System.out.print(str + " "); } System.out.println(); } }
サンプルコードの出力結果を以下に示します。
123 456 789
配列の要素が取り出されて出力されています。
for文と拡張for文の比較と使い分け方
for文と拡張for文は配列においてどちらも使うことができます。それぞれのメリットとデメリットから、配列での使い分け方を考えてみます。
まずfor文の特徴からまとめてみます。
- メリット
- 初期化文や条件文などで細かい条件を設定できる
- デメリット
- コードが拡張for文より冗長化する
- 条件指定を間違えると「Array Index Out Of Bound Exception」のエラーが発生する
次に拡張for文の特徴をまとめてみます。
- メリット
- for文よりコードがすっきりして可読性が高い
- 例外を考慮する必要がない
- デメリット
- 細かい条件指定ができない
- 配列やコレクション以外で使えない
配列を扱う時には、可読性の面から基本的には拡張for文が使われることが多いです。
まとめ
今回やったことのまとめです。
- for文は指定した終了条件を満たすまで処理を繰り返す
- 拡張for文は配列とコレクションから順番に要素を取り出して処理を繰り返す
以上がfor文と拡張for文の使い方の紹介になります。