对于持有对象引用的ArrayLists意味着什么,我有点困惑。有人能给我一个关于如何在代码中显示它的例子吗?此外,arraylist可以有一个参考自己的元素吗?谢谢!
答案 0 :(得分: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
)。
答案 1 :(得分:0)
您必须开始区分变量,值和对象。
变量是容器。它们包含值。
值可以是两种类型,原始值和引用。参考值是指向对象的指针。
对象是也具有行为的数据结构。
所以在
Object var = new Object();
var
是一个变量。 new Object()
是一个新的实例创建表达式,其值为Object
,该值是对Object
类型对象的引用。然后将该值分配给var
。
然后,您可以使用var
来调用方法
var.toString();
运行时环境将评估var
,它会生成一个引用值,检索引用的对象,并调用该方法。您可以通过执行
var
中存储的值
var = someOtherValue;
现在var
将保留一个新值。
ArrayList
在幕后使用数组。数组是一个特殊的对象,其元素(您可以将其视为字段)本身就是变量。
所以
Object[] arr = new Object[10];
是一个类型为Object
的数组,其中包含十个变量。这些变量包含Object
类型的值。同样,这些值是参考。您可以评估它们,也可以重新分配它们。
arr[3].toString();
arr[7] = "maybe a string";
arr[9] = arr[9]; // possible, but makes no sense