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」。