この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
となります。
Discover more from Coursity
Subscribe to get the latest posts sent to your email.