Re: [問題] 物件銷毀
※ 引述《lkjh0877 (123)》之銘言:
: 我是用degugger觀察list裡面的內容的
: 而且我上網找arraylist的source code裡面的clear method是長這樣:
: modCount++;
: // Let gc do its work
: for (int i = 0; i < size; i++)
: elementData[i] = null;
: size = 0;
: 因此我當初認為西瓜是會直接被銷毀的
: 顯然我必須要再去看一下add的方法
: 那假如我今天要將已放進西瓜籃的西瓜銷毀
: 可以透過從西瓜籃裡拿出來的?還是只能從原本的a1、a2?
這裡問題有點多,雖然都是小問題,不過混在一起就變大問題了
首先就是,這一切跟西瓜籃有什麼關係?
//要執行也不是不行的 sudo code
西瓜 甲 = 西瓜田.收割();
西瓜 乙 = 西瓜田.收割();
西瓜籃[1] = 甲;
西瓜籃[2] = 乙;
西瓜籃[1] = 空的;
西瓜籃[2] = 空的;
你會說西瓜就這樣被銷毀了嗎?
拜託,西瓜又還沒被吃掉 or 壞掉
只不過西瓜籃空掉而已......
好,接下來是「什麼叫銷毀」
(糟糕,突然想接「接上他的腿」 Orz)
基本上,用擬人化的講法
所有的變數(西瓜),都要有個 reference(名字 or 籃子裡頭的位址)
西瓜 甲 = 西瓜田.收割();
甲 = 空的;
那剛剛收割起來的那個西瓜就沒有名字了
因為沒啥鳥用、或著說你沒辦法明白指出是那個實體(instance)
所以會被回收掉(GC)
西瓜 甲 = 西瓜田.收割();
西瓜籃[1] = 甲;
//在這個摸們特,其實「甲」跟「西瓜籃[1]」都同時代表某個西瓜實體
甲 = 空的;
//在這裡還無所謂,因為可以用「西瓜籃[1]」來代表那顆西瓜
西瓜籃[1] = 空的;
//這時候就沒任何方法可以代表那個西瓜實體了,所以在 JVM 中會被銷毀
====
接上他的腿!
--
錢鍾書: 說出來的話
http://www.psmonkey.org
比不上不說出來的話
Java 版 cookcomic 版
只影射著說不出來的話
and more......
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.135.202.140
→
11/09 19:38, , 1F
11/09 19:38, 1F
推
11/12 11:36, , 2F
11/12 11:36, 2F
討論串 (同標題文章)