返回信息流如图所示,图1中的面试题4,关于cobj指向aobj,这么说对么?感觉是aobj指向了cobj啊。第6行的cobj不符合么?还有,题目中问的是第几行的obj符合垃圾回收标准,指的是引用吧?根据图2的说法,是不是在图1里执行到第四行的时候,第一行通过new Object()出来的对象就已经符合回收标准了?但是aobj这个引用还不符合?
这是一条镜像帖。来源:北邮人论坛 / java / #49510同步于 2016/4/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
java内存回收问题
FuckUSA
2016/4/20镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
书上那样说说不清楚,最好给对象起名字,而不是使用变量名指代对象。
比如:
Foo a = new Foo("X");
Foo b = new Foo("Y");
Foo c = new Foo("Z");
a = b; // 现在起a指向Y,b指向Y,c指向Z
a = c; // 现在起a指向Z,b指向Y,c指向Z
c = null; // 现在起a指向Z,b指向Y,c指向null
a = null; // 现在起a指向null,b指向Y,c指向null
反正,第4行尾X就可以回收了;第7行尾Z可以回收了;Y到最后也不可以回收。
“给对象赋予null值”这个说法本身就不对,可以给变量赋予null值,而不是给对象。
好的,谢谢暖神!
按照暖神说的,图1里用红线划出来的那一句是错的喽?a = b ; 之后是a指向了b所引用的对象,b肯定不能反指是吧?当时看到这句话就感觉怪怪的。
【 在 nuanyangyang 的大作中提到: 】
: 书上那样说说不清楚,最好给对象起名字,而不是使用变量名指代对象。
: 比如:
: [code=java]
: ...................
【 在 FuckUSA 的大作中提到: 】
: 好的,谢谢暖神!
: 按照暖神说的,图1里用红线划出来的那一句是错的喽?a = b ; 之后是a指向了b所引用的对象,b肯定不能反指是吧?当时看到这句话就感觉怪怪的。
不知道你说的“反指”是什么意思。但这书……反正我很不喜欢“面试宝典”这类的
图1里的第五行 a = c ;
此时a应该是指向了c所引用的对象。但是它后面又说了c指向了a,感觉这句话应该不对吧。。。就和普通的赋值语句一样,把c的值赋给了a,怎么能说是把a的值赋给了c呢。
我基础比较差,而且以后是打算做安卓方向的,只能看这个来补一补java的基础知识啦,对以后面试可能也有一些用。
【 在 nuanyangyang 的大作中提到: 】
:
: 不知道你说的“反指”是什么意思。但这书……反正我很不喜欢“面试宝典”这类的
【 在 FuckUSA 的大作中提到: 】
: 图1里的第五行 a = c ;
: 此时a应该是指向了c所引用的对象。但是它后面又说了c指向了a,感觉这句话应该不对吧。。。就和普通的赋值语句一样,把c的值赋给了a,怎么能说是把a的值赋给了c呢。
: 我基础比较差,而且以后是打算做安卓方向的,只能看这个来补一补java的基础知识啦,对以后面试可能也有一些用。
那本书我不想再吐槽了。如果真的想补一补Java,我还是推荐 https://docs.oracle.com/javase/tutorial/ 对于引用,没有比这一页说得更清楚的了: https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html
好的,多谢暖神!!!
【 在 nuanyangyang 的大作中提到: 】
:
: 那本书我不想再吐槽了。如果真的想补一补Java,我还是推荐 https://docs.oracle.com/javase/tutorial/ 对于引用,没有比这一页说得更清楚的了: https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html