要素への値の代入と参照
配列は複数の値を格納する場所を管理でき、その一つ一つは要素と呼ばれます。要素は通常の変数と同じように値を格納するための入れ物であり、直接値を代入したり取得したりすることが可能です。
配列の各要素は次のように表すことができます。
配列変数[インデックス]
配列変数の後の「[」と「]」の間にインデックス(又は添え字)と呼ばれる整数を記述することで特定の要素を表すことができます。配列では複数の要素を持つことができるため、何番目の要素かを特定するのがインデックスで指定される数値だと考えて下さい。
例えば5個の要素を持つ配列を作成した場合にはインデックスとして0から4までを使用して各要素を表すことができます。1から5ではなく0から始まることに注意して下さい。
実際には次のように記述します。
int n[] = new int[5]; n[0] = 10; n[1] = 14; n[2] = 24; n[3] = 18; n[4] = 22; System.out.println(n[0]); int sum = n[1] + n[2]; n[4] = n[3] * 5;
配列変数自体は参照型の変数でしたが、配列に含まれる各要素は普通の変数と同じように値を代入することができます。また、プログラムの中で要素を記述すると要素に格納されている値が記述されているように処理されます。このように配列の要素は通常の変数と同じように扱うことができます。
不正なインデックス
インデックスを指定する場合には、その対象となる配列で確保された要素数の範囲内でなければなりません。例えば要素の数を5個しか確保していないのにインデックスに7などの数値を指定すると実行時エラーとなります。
int n[]; n = new int[5]; n[7] = 15;
上記はコンパイルの時点ではエラーとなりませんが、実際に実行してみると「java.lang.ArrayIndexOutOfBoundsException」と言うエラーが発生します。Javaでは事前に用意した要素の数しか利用できませんので注意して下さい。
インデックスを変数で指定
インデックスに指定する値は整数(ただしlong型の値は指定できません)ですので、数値を直接記述する以外に整数型の変数を指定することもできます。
int n[] = new int[5]; int index = 0; n[index] = 15;
変数を使ってインデックスを指定できることで、繰り返し処理と配列を組み合わせて効率的に配列に含まれる各要素を処理することが可能になります。次のような使い方は頻繁に使用されるので覚えておいて下さい。
int n[] = new int[3]; n[0] = 10; n[1] = 20; n[2] = 18; for (int i = 0; i < 3; i++){ System.out.println(n[i]); }
インデックスの値をfor文などを使って変化させ、配列に含まれる全ての要素を順に処理しています。このような使い方ができることが配列で複数の値を管理する大きなメリットとなります。
サンプル
では簡単な例で試しておきます。
class JSample4_1{ public static void main(String args[]){ int n[] = new int[3]; n[0] = 20; n[1] = 18; n[2] = n[0] * 2 + n[1]; System.out.println(n[2]); } }
コンパイル後に実行すると次のように表示されます。
( Written by Tatsuo Ikura )