【发布时间】:2022-01-17 13:14:40
【问题描述】:
假设我们有三个 Bear 对象:mamma、poppa 和 baby。我们创建一个“熊”ArrayList 并将指向三个熊的指针添加到 ArrayList。
// Create three bears
Bear momma = new Bear();
Bear poppa = new Bear();
Bear baby = new Bear();
// Create an ArrayList, add the three Bear pointers
ArrayList bears = new ArrayList();
bears.add(momma);
bears.add(poppa);
bears.add(baby);
上面的代码产生了文档中显示的内存结构。
请注意,bears.add(momma) 行不会将 momma Bear 对象的副本添加到 ArrayList。相反,它只是将指向 momma Bear 对象的指针添加到 ArrayList。在 Java 中,通常会有这样的“浅”指针指向一个对象——有一个对象有很多指向它的指针。
关于内存结构,请参考下面给出的文档第 3 页的图表: Document
我的疑惑,
1)有人能解释一下上面这段话想说什么吗?
-
文档中所说的java中的浅指针是什么意思?
-
ArrayList 中究竟存储了什么。在显示结构的图像中,显示有两个指针指向 ArrayList 中的每个元素。
据我所知,ArrayLists 只能存储对象的引用变量。但是,从 ArrayList 中的块内部指向的指针是什么。
ArrayLists 中存储的是什么?
【问题讨论】:
-
它存储对这些对象的引用。 “指针”不是您通常在 Java 中使用的术语。另请参阅"Is Java pass-by-reference or pass-by-value"
-
“指针”、“参考”... potayto potahto。大致意思相同,只是在java中我们称之为'参考'。
-
我怀疑为什么我们有两个指针指向一个对象。例如 poppa po-+int 指向对象,而索引位置 1 处的指针指向同一个对象。