马老师数据结构与算法大师课
数组(Array)
数组是数据结构中最简单,也是最常用的结构,很多编程语言都内置数组。其他数据结构,比如栈和队列都是由数组衍生出来的。下图展示了 1 个数组,它有 4 个元素。每一个数组元素的位置由数字编号,称为下标或者索引(index)。大多数编程语言的数组第一个元素的下标是 0。
根据维度区分,有两种不同的数组:
1️⃣一维数组(如上图所示)
2️⃣多维数组(数组的元素为数组)

在 Java 中当创建数组时会在内存中划分出一块连续的内存,然后当有数据进入的时候会将数据按顺序的存储在这块连续的内存中。当需要读取数组中的数据时,需要提供数组中的索引,然后数组根据索引将内存中的数据取出来,返回给读取程序。在Java中并不是所有的数据都能存储到数组中,只有相同类型的数据才可以一起存储到数组中。
所有的数据结构都支持几个基本操作:读取Get、插入Insert、删除Delete。

因为数组在存储数据时是按顺序存储的,存储数据的内存也是连续的,所以它的特点就是寻址读取数据比较容易,插入和删除比较困难。在读取数据时,只需要告诉数组要从哪个位置(索引)取数据就可以了,数组会直接把想要的位置的数据取出来。插入和删除比较困难是因为这些存储数据的内存是连续的,要插入和删除就需要变更整个数组中的数据的位置。举个例子:一个数组中编号0->1->2->3->4这五个内存地址中都存了数组的数据,现在需要往4中插入一个数据,那就代表着从4开始,后面的所有内存中的数据都要往后移一个位置,相当耗时。