![零基础Java学习笔记](https://wfqqreader-1252317822.image.myqcloud.com/cover/177/36710177/b_36710177.jpg)
2.4 数组
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_58.jpg?sign=1739276914-mH273ziD8EMZp7UjlwoJhRthQ6r5FmM3-0-b636e421b2feac377d7bd5f7813be916)
数组是一种最为常见的数据结构,可以保存一组相同数据类型的数据。数组一旦创建,它的长度就固定了。数组的类型可以为基本数据类型,也可以为引用数据类型;可以为一维数组、二维数组,也可以为多维数组。
2.4.1 声明数组
声明数组需要指定数组类型和数组标识符。
声明一维数组的方式如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_59.jpg?sign=1739276914-pD5K05cfY1zCJAwtURsOoGvCIcxwejY1-0-0a1f82f28a775620c2f5bc63b11216c3)
上面两种声明数组格式的作用是相同的,但是前一种方式更符合原理,后一种方式更符合原始编程习惯。例如,分别声明一个int 型和boolean 型的一维数组,具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_60.jpg?sign=1739276914-tGG3HovvAkp330fOEk6yYivP2s5MPokg-0-6959b08e2cdfe8cd2933a1dde9297311)
Java 中的二维数组是一种特殊的一维数组,即数组的每个元素是一个一维数组,Java并不直接支接二维数组。
声明二维数组的方式如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_61.jpg?sign=1739276914-ia4kzEg7zZXBOqDFPy1SkMs2UIKGQ2kI-0-ca3c294624dd743d75108e683f7faa8a)
例如,分别声明一个int 型和boolean 型二维数组,具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_62.jpg?sign=1739276914-DbX5vbpHxQPbhrC1ON9b0VdmOoX6cu5w-0-91a337ef86189facec0e84256caa7134)
2.4.2 创建数组
创建数组实质上就是在内存中为数组分配相应的存储空间。
创建一维数组:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_63.jpg?sign=1739276914-aPpZYXudGew8UhlTkSpza6OFWd51GxVX-0-c79b63ff38e4f8b28453971f430446d3)
创建二维数组:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_64.jpg?sign=1739276914-WR1ayAgZ4o60FSzfef8NBGt031z1iwIT-0-2d7375614c3a582e83ad578eeec7fdf4)
可以将二维数组看作一个表格,例如,可以将上面创建的数组days 看作如表2.4 所示的表格。
表2.4 二维数组内部结构表
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_65.jpg?sign=1739276914-p1k2BBe69zvlrx71x7uABo3JBmzQeEYx-0-8d4655d9b2fbeb62f304463ecdcc8582)
2.4.3 初始化数组
在声明数组的同时,可以给数组元素一个初始值,一维数组初始化如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_66.jpg?sign=1739276914-4tA03DkhoKFj9N8SFGANbHDwxiTiQ09o-0-377292faa07a428d524cd3a8e0c8af96)
上述语句等价于:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_67.jpg?sign=1739276914-h9QG6op4mbVTsWyHcn5UBdiUM84ZXi6I-0-034db97a730704328fd2bb7180b515c2)
二维数组初始化如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_68.jpg?sign=1739276914-Re8wHVffoScQgEH5gmlsmU7opO2RVzSj-0-0a5e15ac51d64a396d1d3eb03955d7a9)
2.4.4 数组长度
数组的元素的个数称为数组的长度。对于一维数组,“数组名.length” 的值就是数组中元素的个数;对于二维数组,“数组名.length” 的值是它含有的一维数组的个数。例如:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_69.jpg?sign=1739276914-VxvaPNqPyItMmyhDSzKWKpkVH5BpgW7E-0-13c3bbde1f1fe2685e4469f1b87573d2)
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_70.jpg?sign=1739276914-gQuuDTArcYHoDXwAWGBZr9C43rU5RoEE-0-7438a2360e1ffadc210dcc4c429a7c83)
如果需要获得一维数组的长度,可以通过下面的方式:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_71.jpg?sign=1739276914-YuNzolPG5lx0G0NUwNqd7b9fpxiRBDXU-0-b87ec535c18f03e1b849d6e4212f4120)
如果是通过下面的方式获得的二维数组的长度,则得到的是二维数组的行数:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_72.jpg?sign=1739276914-lPMi0V1ePwXre8Oma5cMctkldvBFFJcV-0-07731973ba42e0b7b02678b6c4d6d260)
如果需要获得二维数组的列数,可以通过下面的方式:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_73.jpg?sign=1739276914-iktgoGYDcQkcM8hSWDVtPhUEkoXJqGdx-0-5914350e3d0b2caf5fb9ed9b0930a036)
如果是通过 “{}” 创建的数组,则数组中每一行的列数可以不相同,例如:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_74.jpg?sign=1739276914-C804sWnVAkKGD3Srx08OhZIcziEYqZJY-0-d5c3ac23a0a6e500f7530f16be59e0e0)
在这种情况下,通过下面的方式得到的只是第一行拥有的列数:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_75.jpg?sign=1739276914-1ivz8jWwFpZdOCCZyJQ5RFe2b66tEKnI-0-ca5fe346b493d5e531d384f29d4f4b5b)
如果需要获得二维数组中第二行和第三行拥有的列数,可以通过下面的方式:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_76.jpg?sign=1739276914-FQ4uxLD1HzzmghzVUI0d0cGbxyz0GX4h-0-3e7f60210c571bf4537d4e2dede8d912)
2.4.5 使用数组元素
一维数组通过索引符来访问自己的元素,如months[0],months[1] 等。需要注意的是,索引是从0 开始的,而不是从1 开始的。如果数组中有4 个元素,那么索引到3 为止。
在访问数组中的元素时,需要同时指定数组标识符和元素在数组中的索引。例如,访问上面代码中创建的数组,输出索引为2 的元素,具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_77.jpg?sign=1739276914-vL3eVCmXS0kpQ6oJD5oaqftY9cp1OBxV-0-bffa049010d5d58e793e44c86971ae34)
二维数组也是通过索引符访问自己的元素的。在访问数组中的元素时,需要同时指定数组标识符和元素在数组中的索引,例如,访问2.4.2 节代码中创建的二维数组,输出位于第二行、第三列的元素,具体代码如下:
![img](https://epubservercos.yuewen.com/06B79A/19471983008810406/epubprivate/OEBPS/Images/txt003_78.jpg?sign=1739276914-qLFX6tGwPBCUJZtes1kqPad7C7ga8Mh3-0-ab1b03c8c96eea04db473e5d5ed2b375)