[问题] 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