数组的特点
数组是最简单的一种复合数据类型,数组是一系列相同数据类型数据的集合,我们通过数组名和元素对应的下标来获得每个元素具体的值。
具体的话,数组具有以下特点:
- 一致性:数组只能保存相同数据类型元素,元素的数据类型可以是任何相同的数据类型。
- 有序性:数组中的元素是有序的,通过下标访问。
- 不可变性:数组一旦初始化,则长度(数组中元素的个数)不可变。
数组的声明与初始化
声明与分配空间
我们使用一个数组需要先定义以及声明我们的数组,JAVA中有两种声明数组的方式:
- 一种是JAVA推荐的方式:
datatype [] dataname;
- 另一种是C\C++使用的方式:
datatype dataname[];
这里当然选择优先使用第一中JAVA推荐的定义方式,因为这样的定义更符合逻辑以及语义。
比如我们定义一个int类型的数组可以这样做:
int[] nArry;
定义了一个数组后,我们要使用它还需要将他初始化,也就是JAVA需要给我们的数组分配空间,分配空间用到了new
关键字。
dataname = new datatype[size];
三种初始化方式
第一种初始化的方式:
int[] nArry = new int[10];
这种初始化的方式我们只是指定了数组的长度,系统将自动给我们的数组分配初始值。
第二种初始化的方式:
int[] nArry = new int[]{1, 2, 3, 4};
直接在初始化的时候就指定元素的值。
这里需要注意的是不要在进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值,这样会造成代码错误。
错误示例:
int[] nArry = new int[4]{1, 2, 3, 4};
第三种初始化的方式:
直接指定元素的值
int[] nArry = {1, 2, 3};
使用这种方式时,数组的声明和初始化操作要同步,即不能省略数组变量的类型。
错误示例:
数组建立时JAVA的内存变化
我们这里只是浅析一下JAVA部分内存结构,后续有关内存的知识会再写一篇笔记。
这里先简单学习一下JAVA内存结构中的堆、栈、方法区:
那么当我们声明一个数组的时候,系统会将我们的这个数组名压入栈中:
接下来我们就使用new来为我们的数组分配空间,这个时候堆中就会开辟一片供我们数组使用的区域: