[問題] java考題(有幾個物件生成)

作者: wawi2 (@@)   2018-12-23 23:26:24
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
}
}
這是一個考題 問的是走到// do complext stuff時共有幾個物件被生成
參考答案是4個
但我怎麼覺得只有兩個(d1, d2)
d3應該只是reference
請問答案是正確的嗎?
如果是正確的 那多出來的兩個物件是在哪邊生成的? 謝謝
作者: kyleJ (資工人)   2018-12-23 23:28:00
new execution自動選字選錯... new Exception ()也生了一個物件
作者: wawi2 (@@)   2018-12-24 03:18:00
那請問Dog d3 = d2;也有生一個?
作者: kniver999 (小囧)   2018-12-24 06:43:00
d3跟d2是指向同一個物件,沒有生新的所以是生成兩個Dog,在建構式中各生成一個Exception共四個物件
作者: t52101t (五子棋)   2018-12-24 22:15:00
懂了 題目沒指定DOG物件 所以要把Exception也算進去..
作者: peter98 (新兵)   2018-12-24 22:45:00
謝謝
作者: JustinHere (良葛格)   2018-12-25 11:45:00
至少 5 個啦!args 是啊!…XD還有… Class 的實例要不要算啊?...XD
作者: ssccg (23)   2018-12-25 17:32:00
這種題目很無聊,沒指定type啊
作者: gaexpa066454 (玄)   2018-12-25 18:43:00
喔喔喔 Exception被做成物件今天才學到

Links booklink

Contact Us: admin [ a t ] ucptt.com