DEV Community

TANIAOKA, Akihiro
TANIAOKA, Akihiro

Posted on

13章17

了解しました。それぞれのコードについて日本語でコメントを付けて、なぜAとEが正しい答えなのかを説明しましょう。

オプションA:

int[] array;          // 整数型の配列を宣言しています。
array = new int[] {}; // 宣言された配列を空の配列で初期化しています。
Enter fullscreen mode Exit fullscreen mode

このコードは、int[] 型の配列変数 array を宣言し、空の配列で初期化しています。これはJavaの配列を扱う正しい方法です。Javaでは、配列を宣言後に空の配列で初期化することが可能です。

オプションE:

Double[] array5 = {null, 1.0}; // Double型のオブジェクト配列を宣言し、nullと1.0で初期化しています。
Enter fullscreen mode Exit fullscreen mode

このコードは、Double 型の配列 array5 を宣言し、最初の要素を null、次の要素を 1.0 で初期化しています。Javaの Double クラスはオブジェクト参照型なので、その要素として null 値を許容しています。このため、この初期化方法も正しいです。

これに対して、他のオプションは以下の理由で不適切です:

オプションB:

int[] array2 = new int[3]; // ここでは配列を宣言し、3つの要素で初期化しています。
array2 = {1, 2, 3};        // これは不正です。配列リテラルは宣言時にのみ使用できます。
Enter fullscreen mode Exit fullscreen mode

Javaでは、配列リテラルを直接変数に代入するには宣言と同時に行う必要があります。代入のみの行で配列リテラルを使用することはできません。

オプションC:

Double[] array3 = new Double[3] {}; // これはDoubleオブジェクトの配列を宣言し、3つのnullで初期化しています。
Enter fullscreen mode Exit fullscreen mode

無名配列を作る時は大カッコの中に要素数を指定しません。

オプションD:

int[] array4 = {array4[0], array4[1]}; // これは自分自身の未初期化の状態の要素を使って初期化しようとしています。
Enter fullscreen mode Exit fullscreen mode

これは不正です。なぜなら、array4 を初期化する際に array4 自身の要素を使用しようとしているからです。配列が初期化される前には、その要素にアクセスすることはできません。

Top comments (0)