Javaでは、配列は同じ型の複数の値を1つの構造にまとめて保存する方法です。他のデータ構造とは違い、配列は一度作成するとサイズを変更できません。要素はインデックスを使って配列に代入したり、配列から取り出したりできます。Javaの配列は0から始まるインデックスを使います。最初の要素のインデックスは0、2番目の要素のインデックスは1、といった具合です。
配列を初期化する標準的な構文は次のとおりです。
type[] variableName = new type[size];
typeは配列の要素の型で、プリミティブ型(例:int)でもクラス(例:String)でもかまいません。
sizeはこの配列が保持する要素の数です(後から変更することはできません)。配列を作成すると、要素はデフォルト値(通常は0、false、null)で初期化されます。
// Declare array with explicit size (size is 2)
int[] twoInts = new int[2];
配列は、配列の作成と値の設定を同時に行える省略記法でも定義できます。
// Two equivalent ways to declare and initialize an array (size is 3)
int[] threeIntsV1 = new int[] { 4, 9, 7 };
int[] threeIntsV2 = { 4, 9, 7 };
この場合、コンパイラーが配列の要素数を判断できるため、長さは省略できます。
配列の要素は、角括弧([])を使ったインデックス記法で代入したり参照したりできます。
// Assign second element by index
twoInts[1] = 8;
// Retrieve the second element by index and assign to the int element
int secondElement = twoInts[1];
配列の有効なインデックスの範囲外にアクセスすると、IndexOutOfBoundsExceptionが発生します。
配列は、配列インスタンスのメソッドやプロパティを呼び出すか、Arraysクラスで定義されている静的メソッドを使うことで操作できます(静的メソッドは通常、ジェネリックコードでのみ使われます)。lengthプロパティには配列の長さが入っています。次のようにアクセスできます。
int arrayLength = someArray.length;
Javaには、配列関連の便利なメソッドをたくさん備えたユーティリティクラスjava.util.Arraysも用意されています(例:Arrays.equals)。
Javaは、int[][] arr = new int[3][4];のような多次元配列もサポートしており、とても便利です。
配列は_コレクション_でもあるため、インデックスで値を参照するだけでなく、for-eachループを使って_すべての_値を繰り返し処理することもできます。
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for(char vowel: vowels) {
// Output the vowel
System.out.print(vowel);
}
// => aeiou
どの値を繰り返し処理するかをより細かく制御したい場合は、forループを使います。
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
for (int i = 0; i < 3; i++) {
// Output the vowel
System.out.print(vowels[i]);
}
// => aei