9.
1)public class x{
2) public object m(){
3) object o=new float(3.14f);
4) object[] oa=new object[1];
5) oa[0]=o;
6) o=null;
7) oa[0]=null;
system.out.println(oa[0]);
9) }
10) }
which line is the earliest point the object a refered is definitely elibile to be garbage collectioned?
a.after line 4
b.after line 5
c.after line 6
d.after line 7
e.after line 9(that is,as the method returns)
题意: (此题有拼写错误大概意思是)哪一行是引用对象明确的允许被垃圾收集机收集的最早的位置
分析: 一个对象成为垃圾有两种情况,一是失去引用;一是离开了作用域。
解答: 程序在第3行new了一个值为3.14的float对象,并用object引用类型o指向它。第4行声明一个大小为1的object类型的数组oa,第5行将o的引用传递给oa的第一个成员oa[0]。注意此时有两个引用o和oa[0]指向实际值为3.14的float对象。第6行让o为空,既o失去对象的引用,也就是float对象失去一个引用o。此时float对象还有一个引用oa[0],用oa[0]依然可以访问。第7行,oa[0]置空,此时float对象已经没有引用指向它,既变为垃圾,可以被收集。所以答案是d。
注意: 注意对象和对象的引用的区别。
示例: 无