配列について学びを深めましょう。
問題
次のコードを見て、実行時に何が出力されるか選択してください。
public class ArrayTest {
public static void main(String[] args) {
int[] numbers = new int[5];
numbers[0] = 10;
numbers[1] = 20;
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
}
}
選択肢
- A. 10 20 0 0 0
- B. 10 20 null null null
- C. 10 20
- D. コンパイルエラー
- E. 実行時エラー
答えと解説
回答を見る
答え
A. 10 20 0 0 0
解説
基本説明:
Javaで配列を宣言しインスタンス化する際、型によって初期値が決まります。int
型の配列の各要素は初期値として0
が設定されます。このため、配列の一部を初期化しない場合でも、その残りの要素には0
が自動的に入ります。
今回のコードでは、要素0
と1
にそれぞれ10
と20
が割り当てられています。他の要素は初期値の0
を保持します。
誤答理由:
B. Javaではプリミティブ型の初期化にnull
は使えません。配列の要素がプリミティブ型の場合、null
ではなくそれぞれの初期値が割り当てられます。
C. 配列全体をループしていますが、0から始まるインデックスすべてを出力していないため、選択肢は不正確です。
D, E. 配列の宣言と使用は正しく行われているため、コンパイルエラーや実行時エラーは発生しません。
つまずきポイント:
多くの受験者が配列の自動初期化の概念を理解していない可能性があります。特にプリミティブ型とオブジェクト型の違いが理解しづらいです。プリミティブ型は自動で初期値が設定されますが、オブジェクト型はnull
が設定されるため注意が必要です。
発展知識:
配列はJavaにおける基本的なデータ構造の一つで、複数の同種型のデータを一元管理するのに適しています。また、Javaにはコレクションフレームワークという、より柔軟で高度なデータ構造たちもありますが、配列はその基本となる概念です。
コレクションには、ArrayList
やHashMap
などのクラスがありますが、これらは動的にサイズを変更可能で、Javaの配列よりも高機能です。これらの知識はJavaのより深い理解につながります。