はじめに
Java の多次元配列は、
「配列の配列」 という仕組みで作られています。
そのため、初期化の書き方が複数あり、
- 行数・列数だけ指定する
- 値をまとめて初期化する
- 行ごとにサイズを変える(段階的配列)
など、用途に応じて使い分けが必要です。
この記事では、やさしく・実務寄りに
多次元配列の初期化方法を整理していきます。
初期化①:行数・列数だけ指定する(空の二次元配列)
Java
int[][] matrix = new int[2][3];- 2 行 3 列の二次元配列
- すべて初期値(int → 0)で埋まる
- まず「枠」だけ作りたいときに便利
初期状態のイメージ
[
[0, 0, 0],
[0, 0, 0]
]
初期化②:値をまとめて初期化(最も読みやすい)
Java
int[][] matrix = {
{1, 2, 3},
{4, 5, 6}
};- 行ごとに
{}で囲む - 実務でも最もよく使われる
- 行数・列数は自動で決まる
初期状態のイメージ
[
[1, 2, 3],
[4, 5, 6]
]
初期化③:new を使った完全版(冗長だが正しい)
Java
int[][] matrix = new int[][] {
{1, 2},
{3, 4}
};- メソッドに配列を渡すときなどに使うことがある
- 通常は省略形
{ ... }で十分
初期化④:宣言と初期化を分ける場合の注意点
Java
int[][] matrix;
matrix = new int[][] {
{1, 2},
{3, 4}
}; // OKただしこれは NG:
Java
int[][] matrix;
matrix = {{1, 2}, {3, 4}}; // エラーポイント
{} の省略形は「宣言と同時」のときだけ使える。
初期化⑤:段階的配列(行ごとに列数を変える)
Java の多次元配列は「配列の配列」なので、
行ごとにサイズを変えることができます。
Java
int[][] jagged = new int[3][]; // 行数だけ決める
jagged[0] = new int[2]; // 2 列
jagged[1] = new int[5]; // 5 列
jagged[2] = new int[1]; // 1 列初期状態のイメージ
[
[0, 0],
[0, 0, 0, 0, 0],
[0]
]
- 行ごとに列数が違う「段階的配列」
- Java ならではの柔軟な構造
- 実務ではデータの形が揃わないときに便利
初期化⑥:三次元以上も同じ考え方
Java
int[][][] cube = new int[2][3][4];- 2 × 3 × 4 の三次元配列
- 初期値はすべて 0
- 「配列の配列の配列」というだけで仕組みは同じ
よくあるミスと注意点
ミス①:行と列を逆に理解する
Java
int[][] m = new int[2][3];- 行:2
- 列:3
ミス②:宣言と初期化を分けて {} を使う
Java
int[][] a;
a = {{1, 2}}; // エラーミス③:段階的配列で null を忘れる
Java
int[][] jagged = new int[3][];
System.out.println(jagged[0][0]); // NullPointerException行を new していないと null のまま。
実務での推奨スタイル
読みやすさ重視で {} を使う
Java
int[][] matrix = {
{1, 2},
{3, 4}
};行数・列数だけ決めたいときは new int[行][列]
Java
int[][] matrix = new int[2][3];段階的配列は「配列の配列」と理解して使う
まとめ
多次元配列の初期化のバリエーション
new int[2][3](枠だけ作る){ {1,2}, {3,4} }(値をまとめて)new int[][] { ... }(完全版)- 段階的配列(行ごとにサイズを変える)
注意点
- {} の省略形は宣言と同時のみ
- 行と列を逆に理解しない
- 段階的配列は null に注意

decopon
多次元配列は、 「配列の配列」という考え方を持つだけで 初期化のバリエーションが一気に理解できます。特に {} を使った初期化は読みやすく、 あなたの“やさしいコード”にもつながります。あなたの学びが、次のステップにつながりますように。

moco
多次元配列は“箱の列が並んでる”イメージ。
初期化の書き方を知ると、もっと扱いやすくなるよ。
コメント