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)配列を用いて、必要な配列分だけメモリ確保を行うのが一般的です。
これは特に多数の配列が含まれるようなケースにおいて強力なメリットがあります。