数据结构 —— 数组
数组结构其实就是一排紧密相邻的可数内存,在编程中算是常见的结构,用于存储多个数据。每个数组元素存放一个数据,可通过数组元素的索引访问、赋值以及取出元素的值。
数组的声明通常包含以下属性:
1、起始地址:表示数组名所在内存中的起始地址。
2、维度:表示几维数组。(如一维数组、二维数组等)
3、索引上限和下限:是指元素在数组中内存所存储位置的上标和下标。
4、数组元素个数:是指索引上限与下限的差加一。
5、数组类型:指声明数组的类型,决定了数组元素在内存中所占用的大小。(如 int 类型)
数组的初始化:
在 C 语言中,数组可以不进行初始化,但是值是不确定的。 而在 JAVA 中,数组必须先初始化,然后才可以使用。 那么就说说 JAVA 的数组初始化。数组的初始化方式有两种:
静态初始化:
初始化时显示指定每个数组元素的初始值,由系统决定数组的长度。
语法格式:
1、type[] arrayName = new type[]{a1, a2, a3, ...};
例:int[] arr1 = new int[]{1, 2, 3, 4, 5, 7, 8, 9};
2、type arrayName = {a1, a2, a3, ...}
例:int[] arr1 = {1, 2, 3, 4, 5, 7, 8, 9}
动态初始化:
初始化时只需指定数组长度,由系统为元素分配初始值。
语法给:
type[] arrayName = new type[length];
例:int[] arr1 = new int[5];
注:type 为变量类型,要与数组中元素的类型一致; 元素必须用花括号括起来,且元素与元素间用英文的逗号隔开。动态初始化需要一个 int 类型的 length 参数用来指定数组的长度;不可同时对相同数组进行静态初始化与动态初始化。
数组的使用:
初始化数组后,就可以使用了。而我们对数组最常用的操作就是访问它了,对它进行赋值和取出。访问数组元素的方法就是在数组引用变量后紧跟一个方括号 [] , 方括号里是元素的索引值。例如: L[0]。 这样就可以把访问的数组元素当做一个普通的变量使用了。
注意:如果访问时索引值 length 小于 0 或者 length 大于数组长度,就会产生异常。“Java.lang.ArrayIndexOutOfBoundsException:N” 意思就是数组索引越界。
一维数组:
一维数组声明:
type[] ArrayName = new type[length];
例:String[] ArrStr1 = new String[3];
ArrStr1 包含 3 个元素,即 3 个连续内存的集合(ArrStr1[0], ArrStr1[1], ArrStr1[2]),可以看成是一条线。
二维数组:
二维数组声明:
type[] [] ArrayName = new type[第一维长度] [第二维长度];
例:int[] [] ArrStr2 = new int[3][3]; (3 为行; 3 为列)
二维数组可以看作是一维数组的扩展,将二维数组转换为一维数组。以行列方式存储(像似一个平面图)
ArrStr2 展开如下:
ArrStr2(0,0), ArrStr2(0,1), ArrStr2(0,2)
ArrStr2(1,0), ArrStr2(1,1), ArrStr2(1,2)
ArrStr2(2,0), ArrStr2(2,1), ArrStr2(2,2)
N维数组声明方式:
type [] [] ... [] ArrayName = new type [第一维长度] [第二维长度] ... [第 N 维长度];