<<3.配列 の目次
配列の基本
問題6(難易度:1)                                   2004年11月26日
次の宣言があるとき、下の各文をコンパイル、実行したとき、正常に実行されるものを選べ。

               1:     int[] a = {1, 2, 3};
               2:     int[] b = {4, 5, 6};
               3:     short x = 2;
               4:     long y = 2;
               5:     double z = 2;

  A. a[x] = 10;
    B. a[y] = 20;
    C. a[z] = 30;
    D. a[3] = 50;
    E. a = b;
解説
 配列要素の添字の値はint型でなければなりません。Aではxがshort型ですが、まずはintに変換されてそれが添字の値に使われるので、問題ありません。byteやcharについても同じです。式の中にchar、byte、short型のいずれかがあると、その値はint型に変換されてから計算に使われるのでしたね。(→2.演算子と制御文 問題11)これはlongには適用されないので、Bはコンパイルエラーになります。もちろんCも同じです。

 Dの添字は3です。配列aの長さは3なので、a[0]〜a[2]の範囲外になり、実行時に例外(ArrayIndexOutOfBoundsException)が発生します。

 Eを実行すると、次の図のように、aとbに同じ参照が入ります。この後
    a[1]=9;
としても
    b[1]=9;
としても同じ結果になります。


解答 A E 
参照 読み物Java 第7章 一軒家よりアパート?
<<3.配列 の目次次問題>>
Copyright (c) 2004 Nagi Imai All Rights Reserved..