所谓空对象就是指向NULL的,即未分配堆内存的,也就是没有new的。
假如有 A a = new A();
在java对象的产生是分两步的:
1.在栈区声明对象 如A a,这时声明的内容相当于一个指针(我们姑且认为它是一个指针,也可以理解为引用),当a=null时表明这是一个没有指向任何对象.
2.实例化a,操作如下a=new A()这是在堆区为a分配了空间.
也就是由栈区的a指向堆区的new A()对象.
而a=null则是表明,首先,a是必然在栈区的,a的值是一个地址(假设它真的是一个指针),a=null表示的是a的值是null,与堆区无关
此时的a与堆并无关系, 垃圾回收机制便是将一个对象赋值为null以切断与之前关联对象的关系之后将对象回收的.
when new() a object and java will allocate the location to the object and it is not null.
ps:so