MENU

【Java Silver】2次元配列の宣言、インスタンス化、初期化および使用

2次元配列の基礎を理解し、使用方法について学びましょう。

問題

次のプログラムを実行した場合の出力はどれでしょうか?正しい選択肢を選んでください。

public class Main {
        public static void main(String[] args) {
            int[][] matrix = {{1, 2, 3}, {4, 5}, {6, 7, 8, 9}};
            System.out.println(matrix[2][2]);
        }
    }

選択肢

  • A. 7
  • B. 8
  • C. コンパイルエラー
  • D. ArrayIndexOutOfBoundsException

答えと解説

回答を見る

答え

B. 8

解説

解説のポイント:

  • 2次元配列の構造
  • 配列の要素アクセス

Javaの2次元配列は “配列の配列” という構造で、柔軟に異なる長さのロウを持つことが可能です。

この問題のコードでは、3つのロウがあり、それぞれ異なる長さ(3、2、4)を持っています。

matrix[2][2]というアクセスは、3番目のロウ(0ベースのインデックス)かつ3番目のカラムの要素を参照しています。

その値は「8」となり、選択肢Bが正しい答えになります。

2次元配列を使用する際のつまずきポイントには、インデックスの範囲を誤って設定してしまうことがあります。

例えば、インデックスを超えた位置にアクセスしようとすると、ArrayIndexOutOfBoundsExceptionが発生します。

この問題では3つの長さの異なる配列があり、その各要素の境界を考慮してアクセスしないとうまく行きません。

このように、2次元配列の特性を把握して、適切に要素を参照できるようピンポイント理解が重要です。

発展知識としては、Javaにはまず最初に、幅広いインデックスへのアクセスを試みて、初心者がうっかりエラーを引き起こしがちな要因を避けていく重要性があります。

また、メモリ効率的な観点からもラグド(Ragged)配列を用いて、必要な配列分だけメモリ確保を行うのが一般的です。

これは特に多数の配列が含まれるようなケースにおいて強力なメリットがあります。

目次