
2.4 数组

数组是一种最为常见的数据结构,可以保存一组相同数据类型的数据。数组一旦创建,它的长度就固定了。数组的类型可以为基本数据类型,也可以为引用数据类型;可以为一维数组、二维数组,也可以为多维数组。
2.4.1 声明数组
声明数组需要指定数组类型和数组标识符。
声明一维数组的方式如下:

上面两种声明数组格式的作用是相同的,但是前一种方式更符合原理,后一种方式更符合原始编程习惯。例如,分别声明一个int 型和boolean 型的一维数组,具体代码如下:

Java 中的二维数组是一种特殊的一维数组,即数组的每个元素是一个一维数组,Java并不直接支接二维数组。
声明二维数组的方式如下:

例如,分别声明一个int 型和boolean 型二维数组,具体代码如下:

2.4.2 创建数组
创建数组实质上就是在内存中为数组分配相应的存储空间。
创建一维数组:

创建二维数组:

可以将二维数组看作一个表格,例如,可以将上面创建的数组days 看作如表2.4 所示的表格。
表2.4 二维数组内部结构表

2.4.3 初始化数组
在声明数组的同时,可以给数组元素一个初始值,一维数组初始化如下:

上述语句等价于:

二维数组初始化如下:

2.4.4 数组长度
数组的元素的个数称为数组的长度。对于一维数组,“数组名.length” 的值就是数组中元素的个数;对于二维数组,“数组名.length” 的值是它含有的一维数组的个数。例如:


如果需要获得一维数组的长度,可以通过下面的方式:

如果是通过下面的方式获得的二维数组的长度,则得到的是二维数组的行数:

如果需要获得二维数组的列数,可以通过下面的方式:

如果是通过 “{}” 创建的数组,则数组中每一行的列数可以不相同,例如:

在这种情况下,通过下面的方式得到的只是第一行拥有的列数:

如果需要获得二维数组中第二行和第三行拥有的列数,可以通过下面的方式:

2.4.5 使用数组元素
一维数组通过索引符来访问自己的元素,如months[0],months[1] 等。需要注意的是,索引是从0 开始的,而不是从1 开始的。如果数组中有4 个元素,那么索引到3 为止。
在访问数组中的元素时,需要同时指定数组标识符和元素在数组中的索引。例如,访问上面代码中创建的数组,输出索引为2 的元素,具体代码如下:

二维数组也是通过索引符访问自己的元素的。在访问数组中的元素时,需要同时指定数组标识符和元素在数组中的索引,例如,访问2.4.2 节代码中创建的二维数组,输出位于第二行、第三列的元素,具体代码如下:
