【发布时间】:2012-11-29 21:08:50
【问题描述】:
我正在准备OCPJP,却被以下模拟考试题卡住了:
给定:
3. interface Animal { void makeNoise(); }
4. class Horse implements Animal {
5. Long weight = 1200L;
6. public void makeNoise() { System.out.println("whinny"); }
7. }
8. public class Icelandic extends Horse {
9. public void makeNoise() { System.out.println("vinny"); }
10. public static void main(String[] args) {
11. Icelandic i1 = new Icelandic();
12. Icelandic i2 = new Icelandic();
12. Icelandic i3 = new Icelandic();
13. i3 = i1; i1 = i2; i2 = null; i3 = i1;
14. }
15. }
当到达第 14 行时,有多少对象符合垃圾收集器的条件?
A. 0
B. 1
C. 2
D. 3
E. 4
F。 6
他们的正确答案是 E,即四个物体,但我不知道为什么。从我的角度来看,i2 及其权重将有资格进行垃圾收集。也许我遗漏了什么,请指教。
【问题讨论】:
-
他们的问题有点傻,因为垃圾收集与程序终止无关(第 14 行)...
-
澄清一下 - 你确定
weight是Long而不是long(对象,而不是原始对象)? -
等等……这不完全取决于这个程序的调用方式吗?字符串是对象,因此提供的任何参数都会改变对象的数量。
-
那些
String在字符串常量池中,所以它们不符合垃圾回收的条件(至少在问题的意义上)。 -
是的,我确定权重很长,我复制粘贴了整个代码。
标签: java garbage-collection ocpjp