10. public Object m() {
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啊,各位有什么高见。
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啊,各位有什么高见。
解决方案 »
- java多态为什么
- 释放数据库资源的问题public void closeAll(){this.closeRs();this.closePstmt();this.closeConn
- 关于JMEnuItem
- 急!!! 求救:如何在elipse中关联源tomcat代码???
- IDE 也是 Java 编辑器的一种吗? 我会用Eclipse , IDE 必须要会用吗?
- java 5.0中类似class.newInstanece()转型有警告的问题
- JAVA程序调用BAT文件运行不可以咯
- /*** 紧急阿,socket通信的问题! 多少分都可以! ***/
- 请大侠介绍一本JAVA2D的书
- 怎样从线程中取得返回值
- ==JTable 如何在表头上加右键菜单,注意不是数据行加,谢谢==
- java应用程序如何播放音乐??请赐教!!
非也!在13行中,Float对象的引用已经给了oa[0]
所以,即便14行中 o 不再引用Float对象,Float对象也不会被回收所以,选C了
当o=null之后 回收的应该是o 而不是Float 对象。这是我的理解,问题是问的Float 而不是o的回收 ,那就选C了。
14行以后,o对象指向了null,这个时候o就要被回收了
真是好玩
那你说
Object obj;
这个obj放哪里啊
Object o = Float(3.14F);
这句话实际上有三个过程,一个是创建一个Float类型的变量,是值类型的,放在栈中;然后又对这个变量进行了封装,产生了一个放在堆中的Object类的实例;最后使指针(姑且这么叫)指向这个Object类的实例。
如果题意指的是Float(3.14F)创建的放在栈里的变量,那就选C
如果题意指的是指针o,那么由于在14行中将它指向了null,所以选B
Object obj和Object o有什么区别吗,是引用类型,放在堆里的啊
这样产生对象了吗?
是我没有说清楚这一点
但楼主的问题是没有错的啊
看java做什么
翻翻c#的书不就完了
When is the Float object, created in line 11, eligible for garbage collection是指11行创建的那个Float对象,当然不是指变量o,o是一个引用,不是对象本身。
http://topic.csdn.net/u/20081118/16/f2009fac-4ff7-47e8-87e4-5969522e10ce.html
翻译成:
在第11行创建的Float类型对象,什么时候可以被垃圾回收。
这样不知道对不对?
但是看好后面
o=new Float(3.14F);
这时候Object被封装成了FLoat类型了。
现在还是引用吗?
这个时候就是值传递类型了。也就是说,现在o你可以看成是Float类的封装类型了。
既然不是地址了,那么当o=null的时候,它不被回收吗?