参考对象?

时间:2013-12-05 02:52:03

标签: java object reference

我有一个对象的ArrayList。 我用这样的东西“检索”其中一个对象:

MyObjectClass myObject = myArrayList.get(34);

如果我随后对myObject进行了修改,例如:

myObject.someMember = 97;

它只是对对象的本地COPY或数组列表中的实际对象进行了吗?也就是说,myObject变量是副本还是数组列表中对象的参考?

3 个答案:

答案 0 :(得分:2)

在Java中,引用对象的名称始终具有引用语义。容器get函数以惯用方式返回容器所包含的相同引用。

如果函数想要返回本地副本,或者您想要本地副本,则可以使用new完成。

MyObjectClass myObject = new MyObjectClass( myArrayList.get(34) );

答案 1 :(得分:1)

  

它只是对对象或实际对象的本地COPY执行   在数组列表中?也就是说,myObject变量是副本还是   它是对数组列表中对象的引用吗?

是的,它将对ArrayList

中的对象状态进行更改

答案 2 :(得分:0)

都不是。 myObject和arraylist中的项都是对存储在别处的对象的引用。

ArrayList不保存对象,只保存对象的引用(就像对象的引用一样)。对象永远不会存储在Java中的其他对象中,尽管有时以这种方式考虑它们也很方便。