它有助於認識到你沒有處理實際的對象,你正在處理指向內存中對象的指針或引用。所以:
Object obj = new Object();
不是一個對象,而是一個指向內存中對象的鏈接。通過將鏈接設置爲空或將其替換爲另一個對象的鏈接來刪除鏈接,舊對象將被刪除... ish。當垃圾收集運行時,它將被刪除。所以:
obj = null;
和
obj = new Object();
基本上將刪除舊的對象。這同樣適用於對象數組,您不是處理實際對象數組,而是處理對象鏈接數組。因此,通過將數組中的位置設置爲null或將位置設置爲新對象,舊對象將被刪除。所以:
ObjArray[4] = null;
和
ObjArray[4] = new Object;
將刪除舊的對象。
編輯:我猜我忘了提及的東西,內存中的單個對象可以有多個鏈接,直到所有這些鏈接都被刪除,對象才能被垃圾回收刪除。
Object obj = new Object();
ObjArray[4] = obj;
obj=null;
在上述情況下,最初創建不會被刪除時的obj設置爲null的對象,這是因爲它的鏈接在ObjArray仍然存在。在對象消失之前,必須將obj和ObjArray [4]都設置爲null。
您應該將顯示與邏輯分開。然後,這成爲一個非問題。(在一個現代系統中,即使是混亂和混亂的概念,它也可能不是問題。) – 2010-11-20 18:49:23