初心者な為、この問題が実行結果として何故答えがCになるのかが分かりません。
一つ一つ解説していただけると助かります。これは、初期化をしてないけど、自動的にデフォルト値が入るため初期化されるパターンですか?
又もしその場合、どこを見れば、デフォルト値が入り初期化されていると分かるのでしょうか?
Javaプログラマ Silver SE11
P.61の変数と配列の、問題2-7です。
次のコードがあります。
- public class Main {
- public static void main(String[]args) {
- int[]a=new int[5];
- boolean[]b= new boolean[5];
- String[]c= new String[5];
- System.out.println("a[0]=" +a[0]+
-
"b[0]="+b[0]+
-
"c[0]="+c[0]);
- }
10.}
コンパイル、実行時した結果として正しいものは次のどれですか?一つ選択してください。
A. コンパイルエラー
B. 実行時エラー
C. a[0]=0 b[0]=false c[0]=null
D. a[0]=0 b[0]=true c[0]=null
E. a[0]=0 b[0]=true c[0]=
F. コードは実行されるが、何も出力されない
解答 C.
問題のコードでは配列を作成したあと要素の代入は行っていません。しかし、配列内はデフォルト値で初期化されるためエラーにはなりません。int型の配列は0、boolean型の配列はfalse、参照型であるString型の配列はnullで初期化されるため選択肢Cが正しいです。