Array和ArrayList的区别

作者: imule 分类: Java知识 发布时间: 2023-02-01 15:00

数组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里面添加或修改值类型元素,都会引起装箱和拆箱的操作,频繁的操作会降低效率。
寄语

    有人在奔跑,有人在睡觉,有人在感恩,有人在抱怨,有目标的睡不着,没目标的睡不醒,努力才是人生应有的态度,睁开眼就是新的开始。

本站文章主要用于个人学习记录,可能对您有所帮助,仅供参考!

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!