当我们写的时候-
ArrayList al=new ArrayList(10);
有时会写一个数组,就像-
RefVar = new dataType[10];
内存中发生了什么?内存是连续排列的还是分散排列的?
发布于 2015-05-30 17:19:42
原则上,Java语言-无论是语言规范还是VM规范-都没有提到如何实现对象和数组,也不保证连续的内存分配。
但在实践中,数组是连续的(只在第一维!),并且ArrayList是使用数组实现的,因此其中的项引用是连续的。尽管ArrayList的实现包括与实际数组分离的其他字段。
如果您向内部数组已满的ArrayList添加一个元素,它将在内部分配一个更大的新数组,并将所有现有的元素引用复制到该数组。因此,即使发生这种情况,元素引用仍然是连续的(实际上)。
发布于 2015-05-30 17:16:10
对于array%s,元素将位于连续的内存位置。
由于ArrayList使用数组数据结构为其元素维护基于索引的系统,因此它的元素也保留在连续的内存位置。
https://stackoverflow.com/questions/30544325
复制相似问题