执行此行代码的预期行为是什么?
Foo f = someOtherObject.getFoo(); //We get a reference of a Foo object from another class
f = new Foo();
someOtherObject.getFoo()将返回新对象还是旧对象?如果我们使用以下代码更改第二行代码,该怎么办?
f = null;
someOtherObjct.getFoo()将返回null还是旧对象?
最佳答案
当为f
分配不同的值/对象时,只需让f
指向不同的内存位置,f
指向的内存就不会更改。
Foo f = someOtherObject.getFoo();
f
指向someOtherObject.getFoo()返回的对象(堆上的某些内存位置)f = new Foo();
f
指向一个新对象(堆上的另一个内存位置)someOtherObject.getFoo()是否会返回新对象?
不,因为我们没有更改
someOtherObject
f = null;
someOtherObject.getFoo()是否会返回null?
不,因为我们没有更改
someOtherObject