Я готовлюсь к 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 и его вес получат право на сборку мусора. Возможно я что-то упускаю, подскажите.
weight
- этоLong
, а неlong
(объект, а не примитив)? - person DNA   schedule 30.11.2012String
находятся в пуле строковых констант, поэтому они не подходят для сборки мусора (по крайней мере, в смысле вопроса). - person user802421   schedule 30.11.2012