代码如下:public class A {
int i;

public A(int i){
this.i=i;
System.out.printf("A"+i+" is Created\n");
}

@Override
public void finalize(){
System.out.printf("A"+i+" is disposed\n");
}
}public class FinalizeTest {
public static void main(String[] args) throws InterruptedException {
A a=null;                               //语句1
for(int i=0;i<3;i++){
a = new A(i);
}  
System.gc();
}
}
运行结果按照估计是A0 A1 A2依次创建,之后A0和A1被回收。但是假如语句1只写A a;运行结果就总是A0 A1 A2都被回收,A2和a之间不是存在强引用吗?然后如果语句1是A a=null;结果就和预想一致,那么究竟是什么原理呢?