お疲れ様です。はるさらと申します。
Javaでプログラミングを進めていくと、
1次元配列だけでは表現しきれないデータを扱う場面が出てきます。
そのとき登場するのが「2次元配列」です。
勉強中の方には、宣言・初期化の仕組みや使い方がやや分かりにくいですが、
仕組みを理解しておけばデータ処理や実務で大いに役立ちます。
この記事では、Javaでの2次元配列の初期化方法を、
基本から実務例、代替手法までサンプルコードを交えて解説します。
2次元配列とは?基本を整理
配列の配列としての2次元配列
Javaにおける2次元配列は、実態としては「配列の配列」です。
つまり、int[][] のように定義されたものは
「int[] を要素に持つ配列」と考えることができます。
例:
int[][] matrix = new int[3][4];
この場合、「3行4列」の配列が作成されます。
すべての要素は初期値として 0 が入ります。
基本的な2次元配列の初期化方法
方法1:サイズを指定して初期化
最も基本的な初期化方法は、
行数と列数を指定するやり方です。
public class ArrayInitExample {
public static void main(String[] args) {
int[][] numbers = new int[2][3];
System.out.println(numbers[0][0]); // 出力: 0
}
}
この場合、2行3列の配列が作られ、
各要素には初期値の0が自動的に格納されます。
方法2:リテラルを使って初期化
あらかじめ値が分かっている場合は、
次のようにリテラルで初期化できます。
public class ArrayLiteralExample {
public static void main(String[] args) {
int[][] numbers = {
{1, 2, 3},
{4, 5, 6}
};
System.out.println(numbers[1][2]); // 出力: 6
}
}
こちらの方が直感的で、テストデータを用意する際によく使われます。
方法3:後から行ごとに初期化
Javaでは「配列の配列」であるため、各行を独立して初期化することも可能です。
public class ArrayRowInitExample {
public static void main(String[] args) {
int[][] numbers = new int[3][];
numbers[0] = new int[] {1, 2};
numbers[1] = new int[] {3, 4, 5};
numbers[2] = new int[] {6};
System.out.println(numbers[1][2]); // 出力: 5
}
}
このように、行ごとに列数を変える「ジャグ配列(段違い配列)」を作ることもできます。
実務での利用例:表形式データの管理
例えば、社員の勤怠データを「日付 × 社員ID」で
管理するようなケースを考えてみましょう。
public class WorkLogExample {
public static void main(String[] args) {
int[][] workHours = {
{8, 7, 6}, // 社員Aの勤務時間
{9, 8, 8}, // 社員Bの勤務時間
{7, 6, 9} // 社員Cの勤務時間
};
System.out.println("社員Bの2日目の勤務時間: " + workHours[1][1] + "時間");
}
}
このように、2次元配列を使えば
表形式のデータを直感的に扱うことができます。
代替手法:Listを使った初期化
実務では、サイズが可変なデータを扱うことが多いため、
配列ではなくListを使うケースもあります。
import java.util.*;
public class ListExample {
public static void main(String[] args) {
List<List<Integer>> list = new ArrayList<>();
list.add(Arrays.asList(1, 2, 3));
list.add(Arrays.asList(4, 5, 6));
System.out.println(list.get(1).get(2)); // 出力: 6
}
}
こちらの方が柔軟性が高く、DBの結果を受け取る際や、
要素数が変化するデータを扱うときに便利です。
注意点:経験の浅い方が間違えやすいポイント
- 固定サイズであることを忘れない
new int[3][4]で作った配列はサイズ変更できません。
可変データにはListを検討しましょう。 - ジャグ配列に注意
各行で列数を変えられる反面、numbers[2][5]のように
存在しない要素にアクセスするとArrayIndexOutOfBoundsExceptionが発生します。 - 初期値は型によって異なる
int:0double:0.0boolean:falseString:null
まとめ
- Javaの2次元配列は「配列の配列」として実装されている。
- 初期化方法は大きく分けて3種類(サイズ指定・リテラル・行ごとに代入)。
- 実務では表形式のデータを扱うのに便利だが、サイズ固定の制約がある。
- 可変データを扱いたい場合は
List<List<>>を活用するのが実用的。 - 経験の浅い方は「固定サイズ」「ジャグ配列の挙動」「初期値の違い」に特に注意が必要。
どなたかのお役に立てば幸いです。
それではまたー!





































