看板 java 關於我們 聯絡資訊
※ 引述《PsMonkey (痞子軍團團長)》之銘言: : ※ 引述《lkjh0877 (123)》之銘言: : : 小弟在寫程式的時候遇到了一個問題 : : 找了幾天了還是找不到解答 : : 所以上來請教一下各位大大 : : 假設我今天寫了一個自定類別A : : A a1 = new A(); : : A a2 = new A(); : : List<A> list = new Array<A>(); : : list.add(a1); : : list.add(a2); : : list.clear(); : : 在整段程式做完之後 : : list內值雖然都已經是null了 : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ : 請問你怎麼知道 list 內值(假設是「內的值」的縮小)是 null : : 但為什麼a1和a2卻不是null? : 農夫種出兩顆西瓜,分別叫西瓜甲跟西瓜乙 : 然後他找了一個籃子,把西瓜甲跟西瓜乙放進去 : 接著他又把籃子清空(至於西瓜是用倒的還是搬的不重要) : 請問一下,西瓜甲跟西瓜乙會因為離開籃子 : 而就變得不是西瓜嗎? : [卡司表] : 籃子 = List : 西瓜 = A : 西瓜甲 = a1 : 西瓜乙 = a2 先為打錯字道歉... 我是用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? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.133.76.30
wannawanna:只要還有東西指向你的西瓜 西瓜就不會被銷毀 11/09 18:27
lkjh0877:了解!感恩 11/09 18:36