Javaにおける配列(Array)の扱い方について、完全かつ包括的に説明します。配列は、同じ型のデータを複数格納できるデータ構造であり、Javaのプログラムにおいて非常に重要な役割を果たします。以下では、配列の宣言から操作、そして応用に至るまで、詳細に解説します。
1. 配列の基本概念
配列は、同じ型の要素を連続的に格納するためのデータ構造です。配列の要素はインデックス(添字)を使ってアクセスすることができ、インデックスは0から始まります。

配列の宣言
Javaで配列を宣言するには、型の後に[]
をつけて配列変数を定義します。
javaint[] numbers;
上記のコードでは、numbers
という名前の整数型配列を宣言しています。ただし、この時点では配列にメモリを割り当てていないため、要素を格納することはできません。
配列の初期化
配列を使用する前に、メモリを確保するために初期化を行う必要があります。初期化方法には、以下の2種類があります。
- 配列を直接初期化する方法
javaint[] numbers = {1, 2, 3, 4, 5};
上記のコードでは、numbers
という配列に5つの整数を格納しています。この方法は、配列のサイズが決まっていて、その場で要素を指定したい場合に使います。
new
キーワードを使って配列を初期化する方法
javaint[] numbers = new int[5];
こちらの方法では、numbers
という配列に5つの整数を格納できる領域を確保しています。初期化時には、配列の各要素がデフォルト値である0に設定されます。
配列の要素へのアクセス
配列の各要素にはインデックスを使用してアクセスします。インデックスは0から始まるため、最初の要素は0
、2番目は1
、という具合です。
javaint firstNumber = numbers[0]; // 配列の最初の要素にアクセス
numbers[1] = 10; // 配列の2番目の要素に値を代入
2. 配列の操作
配列の長さ
配列の長さは、length
プロパティを使用して取得できます。このプロパティは、配列が持つ要素数を返します。
javaint length = numbers.length;
System.out.println("配列の長さは " + length + " です");
配列の要素のループ処理
配列の全ての要素を順番に処理するためには、ループを使用します。特に、for
ループと拡張for
(foreach)ループがよく使われます。
for
ループを使った方法
javafor (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
- 拡張
for
ループを使った方法
javafor (int number : numbers) {
System.out.println(number);
}
拡張for
ループは、配列やコレクションの各要素に簡単にアクセスできる方法として非常に便利です。
3. 多次元配列
Javaでは、配列の中に配列を格納することで多次元配列を作成できます。例えば、2次元配列を使用すると、表のようなデータ構造を作ることができます。
2次元配列の宣言と初期化
javaint[][] matrix = new int[3][3]; // 3x3の二次元配列
matrix[0][0] = 1;
matrix[0][1] = 2;
matrix[0][2] = 3;
matrix[1][0] = 4;
matrix[1][1] = 5;
matrix[1][2] = 6;
matrix[2][0] = 7;
matrix[2][1] = 8;
matrix[2][2] = 9;
上記の例では、3×3の二次元配列matrix
を定義し、それぞれの要素に値を代入しています。
多次元配列のループ処理
多次元配列にアクセスする際も、通常の配列と同様にインデックスを指定します。2次元配列を例にとると、以下のようにネストしたfor
ループでアクセスできます。
javafor (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.print(matrix[i][j] + " ");
}
System.out.println(); // 改行
}
4. 配列の応用例
配列のソート
Javaには、配列をソートするための便利なメソッドが用意されています。Arrays.sort()
を使うと、配列を簡単に昇順に並べ替えることができます。
javaimport java.util.Arrays;
int[] numbers = {5, 2, 8, 1, 4};
Arrays.sort(numbers);
System.out.println(Arrays.toString(numbers)); // [1, 2, 4, 5, 8]
配列のコピー
配列を別の配列にコピーする方法として、System.arraycopy()
やArrays.copyOf()
を使用することができます。
javaint[] numbers = {1, 2, 3, 4, 5};
int[] copiedNumbers = Arrays.copyOf(numbers, numbers.length);
System.out.println(Arrays.toString(copiedNumbers)); // [1, 2, 3, 4, 5]
5. 配列の欠点と改善方法
配列は非常に便利なデータ構造ですが、いくつかの欠点もあります。
-
サイズが固定: 配列のサイズは初期化時に決定され、その後変更できません。動的にサイズを変更したい場合には、
ArrayList
などのコレクションを使用することが一般的です。 -
メモリの無駄遣い: 配列のサイズを大きく設定しすぎると、メモリを無駄に使うことがあります。必要なサイズに適した配列を使うようにしましょう。
まとめ
Javaにおける配列の基本から応用までをカバーしました。配列は非常に強力なデータ構造であり、適切に使いこなすことで効率的なプログラムを作成することができます。しかし、配列のサイズ固定やメモリ管理などの制約があるため、場合によってはArrayList
や他のコレクションの利用を検討することも重要です。