Array和ArrayList的区别
数组Array和ArrayList又是什么关系呢?这两者的联系和区别,也是面试中的一个高频问题。
1、ArrayList是Array的复杂版本。
ArrayList内部封装了一个Object类型的数组,可以说ArrayList对数组进行了一层封装。但是ArrayList是动态数组,是可变大小的复杂数组,它可以动态的添加和删除元素。
2、两者在存储的数据类型上有差异。
我们在定义一个数组的时候,必须指定这个数组的数据类型,也就是说,数组是相同数据类型的集合。Array只能存储相同数据类型的数据。
而ArrayList可以存储异构对象。在不使用泛型的情况下,ArrayList可以添加不同类型的元素,在使用泛型时则只能添加一种类型的数据。
3、两者在长度可变与否上有差异。
在数组声明的时候,我们需要声明数组的大小,数组的元素个数是固定的。也就是说Array的长度是固定的,不可变的。
而ArrayList的长度既可以指定也可以不指定,ArrayList 的容量根据需要自动扩展,ArrayList增加原来空间的50%,它是变长的。如果更改了 ArrayList.Capacity 属性的值,也可以自动进行内存重新分配和元素复制。
4、其他区别:
- Array 位于 System 命名空间中;
- ArrayList 位于 System.Collections 命名空间中。
- Array 可以具有多个维度,而 ArrayList 始终只是一维的。
- Array可以设置下限,但 ArrayList 的下限始终为零。
- 在 Array 中,您只能一次获取或设置一个元素的值,而ArrayList 提供添加、插入或移除某一范围元素的方法。
- 存储非Object的值类型数据,ArrayList的性能不如Array的性能好。因为 ArrayList 的元素属于Object 类型,往ArrayList里面添加或修改值类型元素,都会引起装箱和拆箱的操作,频繁的操作会降低效率。
本站文章主要用于个人学习记录,可能对您有所帮助,仅供参考!

