2つ目の要素数を省略した2次元配列
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
int[][] m = new int[2][];
System.out.println(m[0]);
m[0][0] = 1;
}
}
- A
nullと出力された後、例外が発生する - B
0と出力される - C
nullと出力される - D コンパイルエラーになる
正解と解説を見る
正解: A
- A: m[0] はまだ null なので null と出力され、その後の
m[0][0] = 1で NullPointerException が発生します。 - B: m[0] は int ではなく「int 配列への参照」なので、初期値は 0 ではなく null です。
- C: null の配列の要素にアクセスすると例外が発生します。
- D: 2つ目の要素数は省略できます (最初は省略できません)。
ポイント
new int[2][]は「int 配列への参照」を2つ持つ配列です。中の配列はまだ無いので null です。- null の配列の要素にアクセスすると NullPointerException です。最初の要素数は省略できません (
new int[][3]は NG)。
「配列 (一次元配列、二次元配列) の宣言、インスタンス化、初期化および使用」をこのサイトで解く (記録・間違えた問題の解き直し・AI教師への質問)