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 lcelandic extends Horse{
9. public void makeNoise(){System.out.println("vinny");}
10. public static void main(String[] args) {
11. Icelandic i1 = new lcelandic();
12. Icelandic i2 = new lcelandic();
13. Icelandic i3 = new lcelandic();
14. i3 = i1; i1 = i2; i2 = null; i3 = i1;
15. }
16. }
When line 14 is reached, how many objects are eligible for the garbage collector?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6
答案是 C
可小弟我认为是E,理由是除了2个lcelandic需回收外,2个lcelandic中继承到的Long weight需要要回收,故应该4个呀
请各位老师指导!
16 个解决方案
#1
自己顶一下
#2
各位老师帮忙看看呀
#3
大家都吃饭去啦?
#4
SCJP这么变态?
#5
你的想法实际没错,也可以这么去争辩,但是有点想的太多了。 当回收一个对象时,其下的所有实例都要被回收,2个Icelandic中的Long是指定要被回收的。但真正要考你的是Iclandic 1和3要被回收,所以是2个。
题目出的也有问题,不够严谨。这不会是官方正试的题吧???还是练习题?练习题可能不够严谨还能说的过去。要是正式题也这么出,这道题应该review一下了。。呵呵
题目出的也有问题,不够严谨。这不会是官方正试的题吧???还是练习题?练习题可能不够严谨还能说的过去。要是正式题也这么出,这道题应该review一下了。。呵呵
#6
是练习题,估计是和您说的一样,但愿考试别遇到这种模棱两可的题目吧
#7
i3 = i1; ----------
i3指向的对象没有被引用
i3指向了i1所执行的对象
i1 = i2; ----------i1指向了i2所指向的对象
i2 = null;---------i2没有指向任何对象
i3 = i1; ----------此时i1执行了指向的i2开始指向的对象
i3此时也指向了i2开始指向的对象
i1开始执行的对象没有被引用
综上所述:
有资格被回收的对象是i1、i3指向的对象!
i3指向了i1所执行的对象
i1 = i2; ----------i1指向了i2所指向的对象
i2 = null;---------i2没有指向任何对象
i3 = i1; ----------此时i1执行了指向的i2开始指向的对象
i3此时也指向了i2开始指向的对象
i1开始执行的对象没有被引用
综上所述:
有资格被回收的对象是i1、i3指向的对象!
#8
正式考题都是很严谨的,像这类题都只会有唯一的答案,你可以放心。正式题都是一遍遍筛出来的。。
#9
再支持你一下。祝你考试顺利。
#10
如果是问你有多少个对象就打4个, 如果考你的是lcelandic就2个
Long weight = 1200L 可能改为long wight = 1200L;
Long weight = 1200L 可能改为long wight = 1200L;
#11
对的,问题是此2个对象在heap中还建有2个Long对象,因为这里是Long,用的包装器;如果是long那又是另一回事了
问题是此时Long不会自动解包的呀,Long依旧还一个对象,所以我认为是4个对象,请各位老师指正
#12
谢谢这位大哥!
#13
学习。
#14
请问具体是那四个对象???感觉很晕!!!
#15
学习了
#16
TestInside SUN 310-065:
248. 已知:
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();
13. Icelandic i3 = new Icelandic();
14. i3 = i1; i1 = i2; i2 = null; i3 = i1;
15. }
16. }
到達第 15 行時,有多少個物件能資源回收?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6
Answer: E
248. 已知:
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();
13. Icelandic i3 = new Icelandic();
14. i3 = i1; i1 = i2; i2 = null; i3 = i1;
15. }
16. }
到達第 15 行時,有多少個物件能資源回收?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6
Answer: E
#1
自己顶一下
#2
各位老师帮忙看看呀
#3
大家都吃饭去啦?
#4
SCJP这么变态?
#5
你的想法实际没错,也可以这么去争辩,但是有点想的太多了。 当回收一个对象时,其下的所有实例都要被回收,2个Icelandic中的Long是指定要被回收的。但真正要考你的是Iclandic 1和3要被回收,所以是2个。
题目出的也有问题,不够严谨。这不会是官方正试的题吧???还是练习题?练习题可能不够严谨还能说的过去。要是正式题也这么出,这道题应该review一下了。。呵呵
题目出的也有问题,不够严谨。这不会是官方正试的题吧???还是练习题?练习题可能不够严谨还能说的过去。要是正式题也这么出,这道题应该review一下了。。呵呵
#6
是练习题,估计是和您说的一样,但愿考试别遇到这种模棱两可的题目吧
#7
i3 = i1; ----------
i3指向的对象没有被引用
i3指向了i1所执行的对象
i1 = i2; ----------i1指向了i2所指向的对象
i2 = null;---------i2没有指向任何对象
i3 = i1; ----------此时i1执行了指向的i2开始指向的对象
i3此时也指向了i2开始指向的对象
i1开始执行的对象没有被引用
综上所述:
有资格被回收的对象是i1、i3指向的对象!
i3指向了i1所执行的对象
i1 = i2; ----------i1指向了i2所指向的对象
i2 = null;---------i2没有指向任何对象
i3 = i1; ----------此时i1执行了指向的i2开始指向的对象
i3此时也指向了i2开始指向的对象
i1开始执行的对象没有被引用
综上所述:
有资格被回收的对象是i1、i3指向的对象!
#8
正式考题都是很严谨的,像这类题都只会有唯一的答案,你可以放心。正式题都是一遍遍筛出来的。。
#9
再支持你一下。祝你考试顺利。
#10
如果是问你有多少个对象就打4个, 如果考你的是lcelandic就2个
Long weight = 1200L 可能改为long wight = 1200L;
Long weight = 1200L 可能改为long wight = 1200L;
#11
对的,问题是此2个对象在heap中还建有2个Long对象,因为这里是Long,用的包装器;如果是long那又是另一回事了
问题是此时Long不会自动解包的呀,Long依旧还一个对象,所以我认为是4个对象,请各位老师指正
#12
谢谢这位大哥!
#13
学习。
#14
请问具体是那四个对象???感觉很晕!!!
#15
学习了
#16
TestInside SUN 310-065:
248. 已知:
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();
13. Icelandic i3 = new Icelandic();
14. i3 = i1; i1 = i2; i2 = null; i3 = i1;
15. }
16. }
到達第 15 行時,有多少個物件能資源回收?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6
Answer: E
248. 已知:
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();
13. Icelandic i3 = new Icelandic();
14. i3 = i1; i1 = i2; i2 = null; i3 = i1;
15. }
16. }
到達第 15 行時,有多少個物件能資源回收?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6
Answer: E