【发布时间】:2013-06-22 18:34:49
【问题描述】:
如果我们将引用变量传递给方法并修改对象的状态,则修改是永久性的(如果我错了,请纠正我)。考虑代码:
class CardBoard {
Short story = 200;
CardBoard go(CardBoard cb) { //....(1)
cb = null;
return cb;
}
public static void main(String[] args) {
CardBoard c1 = new CardBoard();
CardBoard c2 = new CardBoard();
CardBoard c3 = c1.go(c2); //pass c2 into a method ....(2)
c1 = null;
// do Stuff
} }
当在上面的代码中,我们说 cb=null 并返回 cb,c2(还有 c3)现在不应该有 null 引用吗? (PS:原来的问题是在“//do stuff”之后询问符合gc条件的对象。答案是2,但我理解有问题。)
【问题讨论】:
-
否,因为引用是按值传递的。 Stack Overflow(以及网络上的其他页面)上有 很多 的问题,其中详细介绍了这一点。
标签: java garbage-collection pass-by-value