
🟢 はじめに
Javaの学習をしていると、二次元配列に遭遇すると思います。
普通の二次元配列は「縦×横が綺麗に揃ったロッカー」のようなイメージですが、実は「各行で要素の数がバラバラの配列」を作ることもできます。
これを「ジャグ配列(Jagged Array:ギザギザな配列)」と呼びます。
今回は、このちょっと変わったジャグ配列を「階によって部屋数が違う、階段状のアパート」に例えて分かりやすく解説します!
💻 サンプルコード:住人管理システムを作ってみよう
まずは、アパートの各部屋の「住人の数」を管理するプログラムを見てみましょう。
public class JaggedArrayExample { public static void main(String[] args) { // 1. 3階建てのアパートの「枠組み」を作る int[][] apartment = new int[3][]; // 2. 各階に「部屋」を作る(ここがジャグ配列の特徴!) apartment[0] = new int[1]; // 1階は1部屋だけ apartment[1] = new int[2]; // 2階は2部屋 apartment[2] = new int[3]; // 3階は3部屋 // 3. 部屋に「住人の数(データ)」を入れる apartment[0][0] = 2; // 1階の1号室には「2人」住んでいる apartment[1][1] = 4; // 2階の2号室には「4人」家族が住んでいる apartment[2][0] = 1; // 3階の1号室には「1人」暮らし // 4. アパートの状況を確認する System.out.println("▼ 各部屋の住人数"); System.out.println("1階1号室 : " + apartment[0][0] + "人"); System.out.println("2階1号室 : " + apartment[1][0] + "人"); // ★注目ポイント System.out.println("2階2号室 : " + apartment[1][1] + "人"); System.out.println("------------------"); System.out.println("▼ アパートの規模を確認"); System.out.println("アパートの階数 (apartment.length) : " + apartment.length + "階建て"); System.out.println("1階の部屋数 (apartment[0].length) : " + apartment[0].length + "部屋"); System.out.println("3階の部屋数 (apartment[2].length) : " + apartment[2].length + "部屋"); } }
🔍 コードの解説
① 枠組みだけを先に作る
new int[3][] のように、2つ目のカッコ [] を空っぽにして宣言するのがジャグ配列の第一歩です。
「3階建てなのは決まったけど、各階の部屋数はまだ未定だよ!」という状態ですね。
② 階ごとに部屋数を決める
apartment[0] = new int[1]; で、1階(インデックス0)には1部屋作りました。
ここで初めて、階段状のギザギザな形が完成します。
③ 超重要!初期値の罠
実行結果を想像してみてください。
データを入れていない「2階1号室 (apartment[1][0])」はどうなるでしょうか?
エラーになる?…いいえ、答えは「0人」と表示されます!
Javaでは、int型の配列を作った直後は、自動的にすべての部屋に「0」が入る(初期化される)というルールがあります。
Java Silverなどの資格試験でもよく狙われる引っ掛けポイントだと言われています。
④ length の便利な使い方
apartment.length は「アパート全体の階数(=3)」
apartment[2].length は「3階(インデックス2)にある部屋数(=3)」
このように、「何階建てか?」と「その階に何部屋あるか?」で length の使い方が変わるのが面白いところです。
✍️ まとめ
ジャグ配列は、文字だけで追うと頭がこんがらがってしまいますが、「アパートの階と部屋」をイメージするとスッキリ理解できると思います。
同じように「ジャグ配列って何?🤯」と悩んでいる方の参考になれば幸いです🙌