Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对对象的ArrayList引用_Java_Arraylist - Fatal编程技术网

Java 对对象的ArrayList引用

Java 对对象的ArrayList引用,java,arraylist,Java,Arraylist,我对ArrayList持有对象引用的含义有点困惑。有人能给我一个例子,说明这是如何在代码中显示的吗?另外,arraylist是否可以有一个元素作为对自身的引用?谢谢 这意味着不再逐字节复制对象,而是在列表中添加对存储对象的内存位置的引用 List<Object> objects = new ArrayList<Object>(); Object myObject = new Object(); objects.add(myObject); // objects conta

我对ArrayList持有对象引用的含义有点困惑。有人能给我一个例子,说明这是如何在代码中显示的吗?另外,arraylist是否可以有一个元素作为对自身的引用?谢谢

这意味着不再逐字节复制对象,而是在列表中添加对存储对象的内存位置的引用

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
List objects=new ArrayList();
对象myObject=新对象();
对象。添加(myObject);
//对象包含对myObject的一个引用
objects.get(0.modify();
//肌体修饰

请注意,将复制基本值(
int

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

变量是容器。它们包含值

值可以有两种类型:基本值和引用值。引用值是指向对象的指针

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

所以在

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

然后可以使用
var
调用方法

var.toString();
运行时环境将计算
var
,这将生成一个引用值,检索引用的对象,并调用该方法。您可以通过执行以下操作重新分配存储在
var
中的值

var = someOtherValue;
现在
var
将保存一个新值

ArrayList
在幕后使用数组。数组是一种特殊的对象,其中的元素(您可以将其视为字段)本身就是变量

所以

是一个类型为
Object
的数组,其中包含十个变量。这些变量包含
Object
类型的值。同样,这些值是引用。您可以评估它们,也可以重新分配它们

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

你一般都知道什么是参照物吗?我相信参照物是指某物的物体。。例如String hello=新字符串();hello是对字符串对象的引用。我说的对吗?Tom的问题很好,但我要说的是,在Java中,我们通常不会区分“对对象的引用”和“对象”。如果有人告诉我一个列表包含“对对象的引用”,我只是想提醒一下,如果对象在列表之外发生了更改,那么列表中的对象也会发生更改:它们是同一个对象。这是一个家庭作业问题吗?这是一个非常基本的问题。@swordhunter2000引用引用一个对象。所以如果你想调用
list.add(hello)String另一个String=list.get(0)
,然后
hello
另一个String
都将引用相同的String对象,因为它们共享相同的引用。这还表明列表不会复制
add
方法传递的对象。它只存储其引用。如果您使用
get(index)
访问它,它将返回该引用。
Object[] arr = new Object[10];
arr[3].toString();
arr[7] = "maybe a string";
arr[9] = arr[9]; // possible, but makes no sense