11. Object o = new Float(3.14F);
12. Object [] oa = new Object[1];
13. oa[0] = o;
14. o = null;
15. return oa[0];
16. }
When is the Float object, created in line 11, eligible for garbage collection?
A. Just after line 13.
B. Just after line 14.
C. Never in this method.
D. Just after line 15 (that is, as the method returns).
这道题答案是B,但我觉得明明是C啊,各位有什么高见。
34 个解决方案
#1
我看也是c,答案有时也会错.
#2
包装类的骗局?哪位大侠可以解释解释背后的原理?
#3
14. o = null; //这句话就是o指向了空 gc可以来回收了 所以line 14之后就o就可以被回收了
选B 我觉得这里的Float object就是指Object o吧
选B 我觉得这里的Float object就是指Object o吧
#4
关注,学习。
#5
#6
非也!
在13行中,Float对象的引用已经给了oa[0]
所以,即便14行中 o 不再引用Float对象,Float对象也不会被回收
所以,选C了
#7
Float 对象的引用从之前的o 交给oa[0],
当o=null之后 回收的应该是o 而不是Float 对象。
这是我的理解,问题是问的Float 而不是o的回收 ,那就选C了。
当o=null之后 回收的应该是o 而不是Float 对象。
这是我的理解,问题是问的Float 而不是o的回收 ,那就选C了。
#8
TO:楼上的朋友
垃圾回收只是在堆内存中进行
Object o;是个变量,放在栈内存的,不属于回收的范围
垃圾回收只是在堆内存中进行
Object o;是个变量,放在栈内存的,不属于回收的范围
#9
题意中的Float Object指的是o对象,
14行以后,o对象指向了null,这个时候o就要被回收了
14行以后,o对象指向了null,这个时候o就要被回收了
#10
是不是与包装类有关?
#11
o只是一个指向对象的指针,他是被回收了,但是还有别的指针指向那块区域,所以他指向的那块堆地址还没有被回收。
#12
学习。。
#13
学习...
#14
变量也分值类型和引用类型的,o是Object类的实例,是引用类型,是放在堆里面的
#15
真是好玩
那你说
Object obj;
这个obj放哪里啊
#16
此题的关键在于题意中的float object指的是什么。
Object o = Float(3.14F);
这句话实际上有三个过程,一个是创建一个Float类型的变量,是值类型的,放在栈中;然后又对这个变量进行了封装,产生了一个放在堆中的Object类的实例;最后使指针(姑且这么叫)指向这个Object类的实例。
如果题意指的是Float(3.14F)创建的放在栈里的变量,那就选C
如果题意指的是指针o,那么由于在14行中将它指向了null,所以选B
Object o = Float(3.14F);
这句话实际上有三个过程,一个是创建一个Float类型的变量,是值类型的,放在栈中;然后又对这个变量进行了封装,产生了一个放在堆中的Object类的实例;最后使指针(姑且这么叫)指向这个Object类的实例。
如果题意指的是Float(3.14F)创建的放在栈里的变量,那就选C
如果题意指的是指针o,那么由于在14行中将它指向了null,所以选B
#17
Object obj和Object o有什么区别吗,是引用类型,放在堆里的啊
#18
那 只是 Object obj;
这样产生对象了吗?
这样产生对象了吗?
#19
没有啊,但楼主的代码是赋了值的啊
#20
Object obj产生的是一个“指针”,指针是放在栈里的,他的值是堆里的某个对象的地址
是我没有说清楚这一点
是我没有说清楚这一点
#21
既然没产生对象,怎莫能说
Object obj和Object o有什么区别吗,是引用类型,放在堆里的啊
唉,你好好看看java吧
Object obj和Object o有什么区别吗,是引用类型,放在堆里的啊
唉,你好好看看java吧
#22
我没有仔细看你上面那个问题
但楼主的问题是没有错的啊
看java做什么
翻翻c#的书不就完了
但楼主的问题是没有错的啊
看java做什么
翻翻c#的书不就完了
#23
我选择c
#24
也许答案是错了。
#25
这个不用吵,题目是:
When is the Float object, created in line 11, eligible for garbage collection
是指11行创建的那个Float对象,当然不是指变量o,o是一个引用,不是对象本身。
When is the Float object, created in line 11, eligible for garbage collection
是指11行创建的那个Float对象,当然不是指变量o,o是一个引用,不是对象本身。
#26
我觉得是C,因为这个回收的只是o这个元素并没有回收Object数组!
#27
应该选c吧,那个Floatc对象仍然被数组所使用,这些scjp的题好像有很多答案是错的,不知怎么搞的呀。
#28
lz 可以参照这个帖子
http://topic.csdn.net/u/20081118/16/f2009fac-4ff7-47e8-87e4-5969522e10ce.html
http://topic.csdn.net/u/20081118/16/f2009fac-4ff7-47e8-87e4-5969522e10ce.html
#29
题目问的是new Float(3.14F)这个对象,而不是new Object[1],所以是B
#30
在下愚昧,不知题目如何翻译?
翻译成:
在第11行创建的Float类型对象,什么时候可以被垃圾回收。
这样不知道对不对?
翻译成:
在第11行创建的Float类型对象,什么时候可以被垃圾回收。
这样不知道对不对?
#31
我感觉是C ~~
#32
其实呢,Object o 说是引用类型,一般是对的。
但是看好后面
o=new Float(3.14F);
这时候Object被封装成了FLoat类型了。
现在还是引用吗?
这个时候就是值传递类型了。也就是说,现在o你可以看成是Float类的封装类型了。
既然不是地址了,那么当o=null的时候,它不被回收吗?
但是看好后面
o=new Float(3.14F);
这时候Object被封装成了FLoat类型了。
现在还是引用吗?
这个时候就是值传递类型了。也就是说,现在o你可以看成是Float类的封装类型了。
既然不是地址了,那么当o=null的时候,它不被回收吗?
#33
我想选C。
#34
我做梦都想选C。
#1
我看也是c,答案有时也会错.
#2
包装类的骗局?哪位大侠可以解释解释背后的原理?
#3
14. o = null; //这句话就是o指向了空 gc可以来回收了 所以line 14之后就o就可以被回收了
选B 我觉得这里的Float object就是指Object o吧
选B 我觉得这里的Float object就是指Object o吧
#4
关注,学习。
#5
#6
非也!
在13行中,Float对象的引用已经给了oa[0]
所以,即便14行中 o 不再引用Float对象,Float对象也不会被回收
所以,选C了
#7
Float 对象的引用从之前的o 交给oa[0],
当o=null之后 回收的应该是o 而不是Float 对象。
这是我的理解,问题是问的Float 而不是o的回收 ,那就选C了。
当o=null之后 回收的应该是o 而不是Float 对象。
这是我的理解,问题是问的Float 而不是o的回收 ,那就选C了。
#8
TO:楼上的朋友
垃圾回收只是在堆内存中进行
Object o;是个变量,放在栈内存的,不属于回收的范围
垃圾回收只是在堆内存中进行
Object o;是个变量,放在栈内存的,不属于回收的范围
#9
题意中的Float Object指的是o对象,
14行以后,o对象指向了null,这个时候o就要被回收了
14行以后,o对象指向了null,这个时候o就要被回收了
#10
是不是与包装类有关?
#11
o只是一个指向对象的指针,他是被回收了,但是还有别的指针指向那块区域,所以他指向的那块堆地址还没有被回收。
#12
学习。。
#13
学习...
#14
变量也分值类型和引用类型的,o是Object类的实例,是引用类型,是放在堆里面的
#15
真是好玩
那你说
Object obj;
这个obj放哪里啊
#16
此题的关键在于题意中的float object指的是什么。
Object o = Float(3.14F);
这句话实际上有三个过程,一个是创建一个Float类型的变量,是值类型的,放在栈中;然后又对这个变量进行了封装,产生了一个放在堆中的Object类的实例;最后使指针(姑且这么叫)指向这个Object类的实例。
如果题意指的是Float(3.14F)创建的放在栈里的变量,那就选C
如果题意指的是指针o,那么由于在14行中将它指向了null,所以选B
Object o = Float(3.14F);
这句话实际上有三个过程,一个是创建一个Float类型的变量,是值类型的,放在栈中;然后又对这个变量进行了封装,产生了一个放在堆中的Object类的实例;最后使指针(姑且这么叫)指向这个Object类的实例。
如果题意指的是Float(3.14F)创建的放在栈里的变量,那就选C
如果题意指的是指针o,那么由于在14行中将它指向了null,所以选B
#17
Object obj和Object o有什么区别吗,是引用类型,放在堆里的啊
#18
那 只是 Object obj;
这样产生对象了吗?
这样产生对象了吗?
#19
没有啊,但楼主的代码是赋了值的啊
#20
Object obj产生的是一个“指针”,指针是放在栈里的,他的值是堆里的某个对象的地址
是我没有说清楚这一点
是我没有说清楚这一点
#21
既然没产生对象,怎莫能说
Object obj和Object o有什么区别吗,是引用类型,放在堆里的啊
唉,你好好看看java吧
Object obj和Object o有什么区别吗,是引用类型,放在堆里的啊
唉,你好好看看java吧
#22
我没有仔细看你上面那个问题
但楼主的问题是没有错的啊
看java做什么
翻翻c#的书不就完了
但楼主的问题是没有错的啊
看java做什么
翻翻c#的书不就完了
#23
我选择c
#24
也许答案是错了。
#25
这个不用吵,题目是:
When is the Float object, created in line 11, eligible for garbage collection
是指11行创建的那个Float对象,当然不是指变量o,o是一个引用,不是对象本身。
When is the Float object, created in line 11, eligible for garbage collection
是指11行创建的那个Float对象,当然不是指变量o,o是一个引用,不是对象本身。
#26
我觉得是C,因为这个回收的只是o这个元素并没有回收Object数组!
#27
应该选c吧,那个Floatc对象仍然被数组所使用,这些scjp的题好像有很多答案是错的,不知怎么搞的呀。
#28
lz 可以参照这个帖子
http://topic.csdn.net/u/20081118/16/f2009fac-4ff7-47e8-87e4-5969522e10ce.html
http://topic.csdn.net/u/20081118/16/f2009fac-4ff7-47e8-87e4-5969522e10ce.html
#29
题目问的是new Float(3.14F)这个对象,而不是new Object[1],所以是B
#30
在下愚昧,不知题目如何翻译?
翻译成:
在第11行创建的Float类型对象,什么时候可以被垃圾回收。
这样不知道对不对?
翻译成:
在第11行创建的Float类型对象,什么时候可以被垃圾回收。
这样不知道对不对?
#31
我感觉是C ~~
#32
其实呢,Object o 说是引用类型,一般是对的。
但是看好后面
o=new Float(3.14F);
这时候Object被封装成了FLoat类型了。
现在还是引用吗?
这个时候就是值传递类型了。也就是说,现在o你可以看成是Float类的封装类型了。
既然不是地址了,那么当o=null的时候,它不被回收吗?
但是看好后面
o=new Float(3.14F);
这时候Object被封装成了FLoat类型了。
现在还是引用吗?
这个时候就是值传递类型了。也就是说,现在o你可以看成是Float类的封装类型了。
既然不是地址了,那么当o=null的时候,它不被回收吗?
#33
我想选C。
#34
我做梦都想选C。