Given:



public class Test {

    public static void main(String[] args) {
        int numbers[];
        numbers = new int[2];
        numbers[0] = 10;
        numbers[1] = 20;

        numbers = new int[4];
        numbers[2] = 30;
        numbers[3] = 40;
        for(int x : numbers){
            System.out.print(" " + x);
        }
    }
}

What is the result?

A.

10 20 30 40

B.

0 0 30 40

C. Compilation fails
D. An exception is thrown at runtime

題解

程式第9行,將新長度為4的整數陣列指派給numbers變數,因此在這之前長度為的2的整數陣列沒有被任何的變數所指向(此陣列空間可稱為孤島),其所佔用的記憶體會自動在稍候被Java的垃圾回收(Garbage Collection)機制給回收重新使用。

數值陣列的裡的數值,一開始的初始值為0。程式只有在第10~11行時更改了numbers陣列物件索引2和3的值。因此最後輸出為「 0 0 30 40」。