看板 java 關於我們 聯絡資訊
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 請問答案是正確的嗎? 如果是正確的 那多出來的兩個物件是在哪邊生成的? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 108.5.129.170 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1545578787.A.E8B.html
kyleJ: new execution 12/23 23:28
kyleJ: 自動選字選錯... new Exception ()也生了一個物件 12/23 23:30
wawi2: 那請問Dog d3 = d2;也有生一個? 12/24 03:18
kniver999: d3跟d2是指向同一個物件,沒有生新的 12/24 06:43
kniver999: 所以是生成兩個Dog,在建構式中各生成一個Exception 12/24 06:44
kniver999: 共四個物件 12/24 06:45
t52101t: 懂了 題目沒指定DOG物件 所以要把Exception也算進去.. 12/24 22:15
peter98: 謝謝 12/24 22:45
JustinHere: 至少 5 個啦!args 是啊!…XD 12/25 11:45
JustinHere: 還有… Class 的實例要不要算啊?...XD 12/25 11:47
ssccg: 這種題目很無聊,沒指定type啊 12/25 17:32
gaexpa066454: 喔喔喔 Exception被做成物件今天才學到 12/25 18:43