for文と配列

こんにちは。「Javaを復習する初心者」です。

今回はfor文を使って配列の要素全てを出力するプログラムを書いてみました。昔からあるfor文の書き方と、拡張for文という書き方を使ってみました。拡張for文はJavaのバージョン5くらいで導入された記法だと思います。

スポンサーリンク

ソースと実行結果

以下のプログラムでは、前半ではfor文、後半では拡張for文を使ってます。前半のfor文ではint型配列を定義して、すべての要素を出力しています。後半はString型配列を定義して、すべての要素を出力しています。

ソースコード
package test;

public class HelloForArray {

    public static void main(String[] args) {

        // 配列数を指定する方法、for文を使った出力
        int[] nums = new int[5];
        nums[0] = 2;
        nums[1] = 3;
        nums[2] = 5;
        nums[3] = 7;
        nums[4] = 11;

        for (int i = 0; i < nums.length; i++) {
            System.out.println("要素番号:" + i + " 値:" + nums[i]);
        }

        // 配列の初期化、拡張for文を使った出力
        String[] names = {"太郎", "花子"};
        for (String name : names) {
            System.out.println("名前:" + name);
        }

    }

}
結果
要素番号:0 値:2
要素番号:1 値:3
要素番号:2 値:5
要素番号:3 値:7
要素番号:4 値:11
名前:太郎
名前:花子

上記のソースコードでは配列を使っています。班単に説明すると、配列とは同じ型の複数のデータをまとめて扱うことができる仕組みです。プリミティブ型、クラス型どちらの配列も扱えます。この例の前半ではプリミティブ型であるint型、後半ではクラス型であるString型の配列を使っています。

解説

上記のソースコードは、前半でfor文、後半で拡張for文を使って、配列の要素をすべて出力するという例です。

前半では、for文の初期化の箇所で定義した変数iを、配列の要素番号の指定で使っています。配列の長さは[変数名].lengthで取得でき、配列の長さを使って、配列の要素番号の最大は[変数名].length – 1となります。つまり、要素番号がとる値は以下となります。

  • i = 0, 1, …, [変数名].length – 1

上記のため、for文の条件は「i < nums.length」になります。「i <= [変数名].length – 1」でも正しいのですが、右辺に演算子が残ってしまうので、少し処理時間に影響があるようです。

後半の例では拡張for文を使ってます。配列を使った拡張for文は以下のように記述します。

構文
    for(型 変数名 : 配列名) {
        処理内容;
        ・
        ・
        ・
    }

処理内容の箇所では、「for (型 変数名 : 配列名)」の箇所で記載した変数を使うことが出来ます。この変数には配列の要素が順番に格納されます。上記の書き方で、配列の要素番号を使わないで、繰り返し処理を記述することが出来ます。

ちなみに、拡張for文の手前に記述している配列namesの宣言では、中括弧を使って初期化する記述方法を使っています。初期化は宣言と同じ行で使うことが出来、宣言した後の行ではこの中括弧を使った記述は使えません。そのような箇所ではエラーが発生します。

試しにEclipseで書いてみると「配列定数はイニシャライザーにおいてのみ使用可能です」というエラーが出力されます。

また、配列に指定した要素番号が宣言した分を超えている場合、エラーが発生します。「java.lang.ArrayIndexOutOfBoundsException」というエラーが発生します。

スポンサーリンク
構文
「Javaを復習する初心者」が復習・学習するブログ
タイトルとURLをコピーしました