5章6

RMAG news

このJavaのプログラムは配列の要素を出力するものですが、出力される内容に関する問題のようですね。このコードを見ると、次のような動作をします:

String型の配列arrayが宣言され、{“A”, “B”, “C”, “D”}の4つの要素で初期化されます。

array[0]がnullに設定されます。これにより、配列の最初の要素がnull参照になります。
拡張forループを使用して配列の各要素を取り出し、strという変数に代入しています。

System.out.print(str)が呼び出され、str変数の値が出力されます。nullを含むすべての要素が出力されるので、出力はnullBCDとなります。

コードの動作を詳しく解説すると以下のようになります:

public class Main {
public static void main(String[] args) {
// String型の配列を宣言し、4つの文字列”A”, “B”, “C”, “D”で初期化する。
String[] array = {“A”, “B”, “C”, “D”};

// 配列の最初の要素をnullに設定(上書き)する。
array[0] = null;

// 配列の各要素に対してループを行う。
for (String str : array) {
// 現在の要素の値を出力する。
// この時、配列の最初の要素はnullなので、文字列ではなくnullとして出力される。
System.out.print(str);
}
// ループが終わると、出力はnullを含んだ形で”nullBCD”となる。
}
}

そのため、選択肢Cの「[nullBCD] と表示される」というのが正解になります。配列の最初の要素がnullに設定されたため、出力時にnullがそのまま表示され、残りの要素”B”, “C”, “D”が続きます。

追記

for (String str : array) はJavaの「拡張for文」(別名「for-eachループ」)と呼ばれる構文です。このループは配列やコレクションのすべての要素を順番に処理するために使われます。

この拡張for文の働きを説明すると、以下のようになります:

array 配列の最初の要素から始めます。
配列の要素を一つ取り出し、その値を str という変数に代入します。

str 変数を使ってループ内の処理を行います(この場合はSystem.out.print(str);によって出力する)。
次の要素に進み、2-3のステップを配列の最後の要素まで繰り返します。

ループの各繰り返しでは、str は array の現在の要素の値を参照しています。このプログラムでは、ループは4回実行されます。最初の繰り返しでは、str は array[0](nullに設定された)の値を持ちます。次の繰り返しでは、str は array[1] の “B”、それから “C”、そして “D” と進みます。ループの各繰り返しで System.out.print(str); が呼ばれるため、出力は nullBCD となります。

Leave a Reply

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