Given:
class Dog {
Dog() {
try {
throw new Exception();
} catch (Exception e) { }
}
}
class Test {
public static void main(String[] args) {
Dog d1 = new Dog();
Dog d2 = new Dog();
Dog d3 = d2;
// do complex stuff
}
}
How many objects have been created when the line // do complex stuff is reached?
A. Two
B. Three
C. Four
D. Six
題解
這題目是在問當執行到「// do complex stuff」這行的時候,已經建立了多少的物件了。注意這裡指的物件不是只有Dog物件,所有的物件都要計入。
程式第13行和第14行,都建立出了一個Dog物件。建立Dog物件時,會執行第3行的建構子,並在try-catch內建立並拋出新的Exception物件。因此每建立一次Dog物件,實際上會建立出兩個物件,建立兩次Dog物件,就會建立四個物件。