选择题 6.  有下面代码:
    interface Animal{public void test();}
    public class Hourse implements Animal{
    public void test(){  ...}
    public static Void main(String[]args)
    {
    Animal a1=new Hourse();
    Animal a2=new Hourse();
    Animal a3=new Hourse();
    a1=a2;a2=null;a3=a1;
    }
    }
    当程序执行到a1=a2;a2=null;a3=a1;这行时,将被垃圾回收器回收的对象个数为______。
【正确答案】 B
【答案解析】 为了便于理解,给下面三个新建的对象起个别名:
   Animal a1=new Hourse();    //对象1
   Animal a2=new Hourse();   //对象2
   Animal a3=new Hourse();   //对象3
   在执行语句a1=a2后,a1和a2都指向对象2,此时对象1不再被引用,因此,可以被垃圾回收器回收。在执行语句a2=null后,由于a1仍然执行对象2,因此,对象2不能被回收。在执行语句a3=a1后,a3也指向对象2,此时对象3不再被引用,也可以被回收。因此,总共有2个对象被回收。所以,选项B正确。