2015-02-10 127 views
1

对于ArrayLists持有对象引用的含义,我有点困惑。有人可以给我一个关于如何在代码中显示的例子吗?另外,arraylist可以有一个元素是一个参考自己?谢谢!ArrayList对象的引用

+1

您是否一般知道,参考是什么? – Tom 2015-02-10 03:30:28

+0

我相信一个引用是一个对象引用的东西..例如.. String hello = new String(); hello是对字符串对象的引用。我对么? – swordhunter2000 2015-02-10 03:35:51

+0

Tom的问题很好,但我会说在Java中我们通常不会区分“对象的引用”和“对象”。如果有人告诉我列表中存有“引用对象”,我只是想提醒一下,如果对象在列表外被更改,列表中的对象也是如此:它们是同一个对象。 – DavidS 2015-02-10 03:36:30

回答

0

这意味着不是将对象逐字节地复制,而是将对存储对象的存储位置的引用放入列表中。

List<Object> objects = new ArrayList<Object>(); 
Object myObject = new Object(); 
objects.add(myObject); 
// objects contains one reference to myObject 

objects.get(0).modify(); 
// myObject modified 

请注意,原始值(例如int)将被复制。

0

您必须开始区分变量,值和对象。

变量是容器。它们包含值。

值可以是原型和参考两种类型。参考值是指向对象的指针。

对象是也有行为的数据结构。

所以在

Object var = new Object(); 

var是一个变量。 new Object()是一个新的实例创建表达式,其值为Object,该值是对Object类型对象的引用。然后将该值分配给var

然后可以使用var调用方法

var.toString(); 

运行时环境将评估var,其产生的基准值,检索被引用的对象,并调用方法。您可以通过执行

var = someOtherValue; 

现在var将举行新的价值重新分配存储在var值。

ArrayList在幕后使用数组。一个数组是一个特殊的对象,它的元素(你可以认为是字段)本身就是变量。

所以

Object[] arr = new Object[10]; 

是含有10个变量Object类型的阵列。这些变量包含类型Object的值。再次,这些值是参考。您可以评估它们,也可以重新分配它们。

arr[3].toString(); 
arr[7] = "maybe a string"; 
arr[9] = arr[9]; // possible, but makes no sense