E作者DavyBlue (失意男)
看板java
标题Re: [问题] 几个书上习题的问题
时间Wed Jan 31 23:49:21 2007
※ 引述《DavyBlue (失意男)》之铭言:
: 给定
: class CardBoard {
: Short story =200;
: CardBoard go(CardBoard cb) {
: cb = null;
: return cb;
: }
: public static void main(String[] args){
: CardBoard c1 = new CardBoard();
: CardBoard c2 = new CardBoard();
: CardBoard c3 = c1.go(c2);
: c1 = null;
: //do something
: }}
: 当到达//do something时 多少物件有资格被自动回收?
: 正解是2个
: 但是我怎麽看都有4个...(虽然选项只有0,1,2,编译错误,balah..)
: 因为go()回传null c3应该也有资格
: 然後引数传入go()时cb=null 应该也有资格
: 但是正解只说c1与story有资格 难道是我想太多?
自回
第一题 有new物件只发生在c1 c2指标变数
传入go()方法後 产生的变化只有 cb先指到与c2同样的物件
然後指到null
c3是自始至终都只有指到null
只有c1指到的那个物件没有人指到他 故.... 答案是c1及story
至於story怎麽来的...在初始化後没人用过他当然能回收...
结果在打完文章後自己就想到了
看来还是要多写程式=.=
这篇也可以留着让各位版友参考
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.113.77.108
※ 编辑: DavyBlue 来自: 59.113.77.108 (01/31 23:53)