它有助于认识到你没有处理实际的对象,你正在处理指向内存中对象的指针或引用。所以:
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