# re: 一个关于java的题目,望高手指导一下 回复 更多评论
2008-09-23 08:10 by
c1、c3、cb被回收吧,这几个在堆中而且值为null;
story是简单类型,在栈中,离开作用域自动消失,不需要回收;
# re: 一个关于java的题目,望高手指导一下 回复 更多评论
2008-09-26 10:36 by
两个吧,一个是c2,一个是c2里面的story
不同意楼上的说法,注意到story 声明的是Short,不是short,Short是一个类,所以story 是一个对象,最简单的验证就是在main方法中c2.story后打点.是能点儿出方法的。
理由
c1肯定是被销毁了
然后就是CardBoard c3 = c1.go(c2);
看go方法无论什么时候都是返回null,c3肯定是null了
c2为什么不是null,是考的值传递和引用传递的知识
c2存放的是指向new CardBoard()的一个地址
而c1.go(c2);传给go方法的是c2的一个拷贝
既然c2是一个地址,那么传给go方法的就是这个地址的一个拷贝,也就是一个副本
虽然副本被传递到go方法后被指向了null,但main方法中的c2还老老实实指向那个new CardBoard();
呵呵 ,有些啰嗦
# re: 一个关于java的题目,望高手指导一下 回复 更多评论
2008-09-28 14:39 by
@猪
谢谢,很有道理!我也是类似的想法.c2只是被拷贝了一个副本进去,真正的c2并没有被改变,是吧.