Java对象重新初始化

时间:2014-10-14 00:47:06

标签: java object

在练习考试中,我遇到了一个类似这样的问题:

Deer steve = new Deer();
Deer mike = new Deer();
steve = mike;
mike = null;
steve.eatGrass();

当我运行它时,它只是运行该方法,但是如果该对象在技术上现在为空,它如何能够运行该方法?

2 个答案:

答案 0 :(得分:1)

不要将对象与变量和引用混淆。

Deer steve = new Deer();

steve变量new Deer()创建Deer 对象并向其返回引用。该引用的值存储在变量 steve中。

然后你做

steve = mike;

您将[{1}}中存储的值的副本存储在mike中。

然后你做

steve

mike = null; 参考值存储在变量null中。这不会影响mike的价值。

答案 1 :(得分:0)

没有。这些只是参考。通过使 mike 为null,您不会使对象无效/销毁/删除。你只是将参考点指向任何东西。该对象仍可以从 steve 引用中引用。但是, steve 指向的原始对象已消失,因为当前没有引用变量指向它。