我正在從java認證書中做一些練習。在一個關於垃圾回收的問題,他們提出了下面的代碼:Java之後的垃圾收集器null
class Test {
private Demo d;
void start() {
d = new Demo();
this.takeDemo(d);
}
void takeDemo(Demo demo) {
demo = null;
demo = new Demo();
}
}
,問題是
當演示對象,在第4行創建的,符合垃圾收集 ?
我會說它可以在指令demo = null之後收集;因爲有它不再引用,但在他們給出的答案是:
當運行該代碼的實例是由符合垃圾收集
我缺少什麼?
我更傾向於說Java是pass-by-pointer。 – Dukeling 2013-02-08 12:27:25
@Dukeling事實並非如此。 – assylias 2013-02-08 12:27:42
如果比較Java和C++,Java更適合傳遞指針(基本上完全)。你可以說它是一個指針的傳值,但是你只是把事情複雜化得超過必要(然後你可以在C++中說相同的東西)。請注意,我不會與其餘的答案爭論。 – Dukeling 2013-02-08 12:31:16