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物件,就會建立四個物件。