Java 配列(Array)

Java では、同じ種類のデータを保存するための資料構造として配列を持っている。つまり、配列は同じ資料型のデータを保存する 1 つの記憶空間である。

1 次元配列

配列を宣言するには、まず配列に保存するデータ資料型を宣言し、配列名と空間のサイズを宣言しなければならない。

data-type var-name[];
data-type[] var-name;

配列の宣言時、配列の空間サイズは指定しなくてもよい。配列を宣言したからといって、すぐにメモリに生成されるわけではない。宣言だけして配列を使うと、null 参照エラーが発生する。配列オブジェクトを生成するには、必ず new 文を使って配列を生成しなければならない。new についてはクラスオブジェクトに関する章で詳しく見ていく。

var-name = new data-type[size];

前の 2 つの文を 1 つの文として使用できる。

data-type[] var-name = new data-type[size];
data-type var-name[] = new data-type[size];

つまり、次のように 1 つの文で宣言と生成を同時に行える。

int[] a = new int[10];

次の例は、3 つの配列を初期化し、値を代入して出力する例である。

package com.devkuma.tutorial.arry;

public class Array1 {

    public static void main(String[] args) {
        int[] a = new int[3];
        a[0] = 1;
        a[1] = 2;
        a[2] = 3;

        System.out.println("a[0] : " + a[0]);
        System.out.println("a[1] : " + a[1]);
        System.out.println("a[2] : " + a[2]);
    }
}

次の例は、3 つの配列の初期化と値の代入を一度に行い、出力する例である。

package com.devkuma.tutorial.arry;

public class Array2 {

    public static void main(String[] args) {
        int[] a = {1, 2, 3};

        System.out.println("a[0] : " + a[0]);
        System.out.println("a[1] : " + a[1]);
        System.out.println("a[2] : " + a[2]);
    }
}

次の例は、3 つの配列の初期化と値の代入を一度に行い、繰り返し文を使って出力する例である。

package com.devkuma.tutorial.arry;

public class Array3 {

    public static void main(String[] args) {
        int[] a = { 1, 2, 3 };

        for (int i = 0; i < a.length; i++) {
            System.out.println("a[" + i + "] : " + a[i]);
        }
    }
}

配列の長さは、上の例のように length で取得できる。

多次元配列

多次元配列は 1 次元配列を複数使って実装する。つまり、1 次元配列を宣言した後、それぞれのインデックスの中に新しい配列を割り当てる方式である。多次元配列の宣言は 1 次元配列と似ている。

data-type var-name[][] = new data-type[size][size];
data-type[][] var-name = new data-type[size][size];
data-type[] var-name[] = new data-type[size][size];
int a[][] = new int[4][5];
int[][] a = new int[4][5];
int[] a[] = new int[4][5];

行列を持つ配列でのインデックス値

[0][0] [0][1] [0][2] [0][3] [0][4]
[1][0] [1][1] [1][2] [1][3] [1][4]
[2][0] [2][1] [2][2] [2][3] [2][4]
[3][0] [3][1] [3][2] [3][3] [3][4]

右側の指数は列を決定し、左側の指数は行を決定する。