入門じゃないJava(6)

こんにちは。

今日も楽しくJavaを見ていきましょう。

ちなみに、前回はエスケープシーケンスを学習しましたね。

creators.hateblo.jp

今回は配列を見ていきたいと思います。

ちなみに、配列を使うメリットや特徴に関しては、柴田 望洋 (2016) .『新・明解Java入門』p178-179に詳しくまとまっているのでそちらを参照してください。

配列

配列変数の宣言

配列の宣言は、

変数名;

型 変数名;

 のいずれかの形になります。

ちなみにint型を構成要素型とするような配列の宣言は、これに則って宣言すると、

 int a;

 int a;

となります。

一般的にはのように宣言するかと思います。

ちなみに、ここで作られる配列変数は配列の本体ではありません。

配列の本体は配列変数とは別に生成する必要があります。

たとえば、構成要素が7個の配列の本体を生成してみましょう。

new int[7]

生成した配列本体は配列変数と関連付けする必要があります。関連付けは以下に示す代入式によって行われます。

a = new int[5];

これで、配列本体が生成されるとともに、変数aがそれを参照するようになります。

なお、配列変数の宣言の初期化子に配列本体の生成式を埋め込むとプログラムはスッキリします。

int[] a = new int[7];

こうすると、生成された配列本体を参照するように変数aが初期化されます。

構成要素へのアクセス

 配列本体内のここの構成要素のアクセス(読み書き)は以下のようにインデックスを[ ]の中に与えることによって実現します。

配列変数名 [ インデックス ]

インデックスは"先頭の構成要素から何個後ろの構成要素であるのか"を表すint型の整数値です。

このインデックスは0から構成要素数-1個までです。

構成要素数がn個の配列の構成要素はa[0], a[1], a[2], ・・・, a[n - 1]です。

配列aの構成要素はそれぞれがint型の変数になっています。そのため、配列内の個々の構成要素に対しては自由に値を代入したり取り出したり出来ます。

 

配列の特徴

まずは、配列を使ったプログラムを走らせてみましょう。

class IntArray01 {
    public static void main(String[] args) {
        int[] a = new int[7];

        a[0] = 5;
        a[2] = 10;
        a[4] = 15;
        a[6] = a[0] * 4;

        System.out.println("a[" + 0 + "] = " + a[0] );
        System.out.println("a[" + 1 + "] = " + a[1] );
        System.out.println("a[" + 2 + "] = " + a[2] );
        System.out.println("a[" + 3 + "] = " + a[3] );
        System.out.println("a[" + 4 + "] = " + a[4] );
        System.out.println("a[" + 5 + "] = " + a[5] );
        System.out.println("a[" + 6 + "] = " + a[6] );
    }
}
×

実行結果

a[0] = 5
a[1] = 0
a[2] = 10
a[3] = 0
a[4] = 15
a[5] = 0
a[6] = 20

C:\Java\06>_

 

 a[6]はa[0] * 4を代入しています。a[0]を取り出したのち4を掛けた積をa[6]に代入しています。

さらに、実行結果を見てみると、値を代入していないa[1], a[3], a[5]の値が0になっていることに気が付きます。

というのも、配列の構成要素は自動的に0で初期化されるという規則があるためです。

構成要素が初期化される値のことを既定値と呼びます。各型によって既定値は異なります。"柴田 望洋 (2016) .『新・明解Java入門』p183 Table 6-2"に詳しくまとめられているのでご参照ください。

 

一般に構成要素型がTypeである配列のことを『Type型配列』または[Type型の配列]と呼びます。すると上の配列aは『int型配列』です。

 

素数の取得

 下記のプログラムをご覧ください。

class IntArray02 {
    public static void main(String[] args) {
        int[] a = new int[8];
        
        for(int i = 0; i < a.length; i++)
            a[i] = i * 8;
        
        for(int i = 0; i < a.length; i++)
            System.out.println("a[" + i + "}= " + a[i]);
    }
}
×

実行結果

a[0] = 0
a[1] = 8
a[2] = 16
a[3] = 24
a[4] = 32
a[5] = 40
a[6] = 48
a[7] = 56

C:\Java\06>_

 

 ここで新しい形式の式が出てきましたね。

a.length

これは、配列の構成要素数を取得するための式です。なお、配列の要素数は長さとも呼ばれます。

配列変数名.length

と言い換えられますね。

 

 配列の要素数を表すlengthは、int型ではなく、final int型です。そのため、lengthに対して値を代入することはできません。

 

 今日はここまでにして続きは次回見ていきましょう。

それでは!

 

 

 参考文献

 柴田 望洋 (2016) .『新・明解Java入門』178-185