5章7

RMAG news

このJavaのコードにはいくつかの配列宣言と初期化が含まれています。問題は、どの配列宣言がコンパイルエラーを起こさないかということです。選択肢B, C, Dが正解である理由を一つ一つ見ていきましょう。

A. int[] a = new int[2]{ 2, 3 };
この行は、サイズが2のint型の配列を宣言し、同時に初期化しようとしていますが、Javaではサイズを宣言時に指定してはならず、初期化時にのみ値を提供する必要があります。したがって、コンパイルエラーとなります。

B. int b[][] = { };
ここではサイズが不定の2次元配列を宣言し、空のブレースを使用して初期化しています。これはコンパイルエラーになりません。配列は空でも、正しい構文です。

C. int[][] c = new int[][]{ };
これも2次元配列を宣言しており、新しいint型の配列を空で初期化しています。これも正しい構文で、コンパイルエラーは発生しません。

D. int[] d; d = new int[]{2, 3};
最初に1次元配列を宣言し、次に新しいint型の配列である{2, 3}で初期化しています。この初期化は匿名配列を使用しており、合法です。したがって、ここでもコンパイルエラーは発生しません。

E. int e[]; e = {2,3};
この行は、1次元配列を宣言してから、ブレース内に直接値を入れて初期化しようとしていますが、これはJavaでは許されていません。値を直接割り当てる場合は、宣言時にしなければなりません。または、新しい配列として初期化する必要があります。このため、コンパイルエラーが発生します。

以下は、コンパイルエラーを起こさないよう修正したコードです。

// A. コンパイルエラー: 配列の宣言時にサイズを指定することはできない。[2]× []なら⚪︎
int[] a = new int[2]{ 2, 3 };

// B. 正しい構文: 空の2次元配列を宣言している。
int b[][] = { };

// C. 正しい構文: 空の2次元配列を宣言し、新しい配列で初期化している。
int[][] c = new int[][]{ };

// D. 正しい構文: 1次元配列を宣言し、後で匿名配列で初期化している。
int[] d;
d = new int[]{2, 3};

// E. コンパイルエラー: 配列の宣言後にブレースで直接値を割り当てることはできない。
int e[];
e = {2,3};

Leave a Reply

Your email address will not be published. Required fields are marked *