1. 数组定义
(1)数组引入:如果每一个数据对应一个单独变量,会出现代码冗余,从而导致代码阅读性和维护性极差!同时针对于变量的操作相当的麻烦。
(2)数组定义:多个相同类型数据元素按一定顺序排列的有限集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
(3)数组在生活中的例子:停车场

2. Java 中定义数组的格式
(1)格式:数据类型[] 数组名 = new 数据类型[ 数组长度 ];
(2)数据类型:明确当前数组存储的数据类型,而且严格遵守数据类型一致化要求,有且只能存储目前数据类型。数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
(3)[]: 表明当前定义的类型为数组类型
(4)数组名:当前数组数据的整体名称,对应当时数组空间内容。数组名是一个引用数据类型的变量
(5)new:
在内存的堆区,申请当前数组所需的内存空间,内存空间的计算方式是【数据类型 * 数组长度】,数组名中引用的是这块连续空间的首地址 |
new 关键字会清空申请内存空间中的所有残余数据内容,打扫卫生 清理数据:计算机为了降低对于硬件的损坏,所有使用硬件的程序,不会清理原本在硬盘、内存留有的数据内容,需要下一个使用者在使用之前打扫! |
(6)数组的长度:
每个数组都有一个属性 length 指明它的长度,例如:数组名.length 用来指明当前数组的长度(元素个数) 长度不可变性:数组一旦初始化,其长度是不可变的 |
3. 数组元素的引用
(1)定义数组并用运算符 new 为之分配空间后,才可以引用数组中的每个元素;
(2)数组元素的引用方式:数组名[数组元素下标]
(3)数组元素下标可以是整型常量或整型表达式。如:a[3],b[i],c[6*i];
(4)数组元素下标从 0 开始;数组的容量 - 1 结束,长度为 length 的数组合法下标取值范围: 0 ~ length-1;
|
4. 数组元素的默认初始值

5. 数组内存分析图

6. 数组的分类
(1)按照维度分:一维数组、二维数组、三维数组、…、n 维数组
(2)按照元素的数据类型分:基本数据类型元素的数组、引用数据类型元素的数组 ( 即对象数组 )
7. Java 中定义一维数组的格式
(1)格式:数据类型[ ] 数组名 = new 数据类型 [ 数组长度 ];
(2)数组的声明:数据类型 数组名[ ];(不推荐)或 数据类型[ ] 数组名;(推荐)
(3)Java 语言中声明数组时不能指定其长度 ( 数组中元素的个数 ),例如:int a[5]; //非法
8. 一维数组的初始化
(1)静态初始化:数组的初始化和数组元素的赋值操作同时进行
|
(2)动态初始化:数组的初始化和数组元素的赋值操作分开进行
|
9. Java 中定义二维数组的格式
(1)格式:数据类型[][] 数组名 = new 类型[一维数组数量][每个一维数组的长度];
(2)数组的声明:数据类型 数组名[ ];(不推荐)或 数据类型[ ] 数组名;(推荐)
(3)Java 语言中声明数组时不能指定其长度 ( 数组中元素的个数 ),例如:int a[5]; //非法
10. 二维数组的初始化
(1)格式1(动态初始化):数据类型[][] 数组名 = new 类型[一维数组数量][每个数组的长度];
例 1:String[][] arr = new String[3][2]; 定义一个数组名为 arr 的二维数组,arr 中有 3 个一维数组,分别为 arr[0], arr[1], arr[2],每个一维数组中有 2 个元素。 给第一个一维数组下标为 1 位赋值为 78 写法是:arr[0][1] = 78; |
例 2:String[][] arr = new String[3][]; 定义一个数组名为 arr 的二维数组,arr 中有 3 个一维数组,每个一维数组都是默认初始化值 null ( 注意:区别于格式 1 ),可以对这个三个一维数组分别进行初始化:arr[0] = new int[3]; arr[1] = new int[1]; arr[2] = new int[2]; |
注:int[][]arr = new int[][3]; //非法 |
(2)格式2(静态初始化):数据类型[][] arr = new 类型 [][]{ {3,8,2},{2,7},{9,0,1,6} };
定义一个名称为 arr 的二维数组,二维数组中有三个一维数组,每一个一维数组中具体元素也都已初始化。 第三个一维数组的长度表示方式:arr[2].length; |
11. 特殊写法情况
(1)数据类型 []x,y[]; x 是一维数组,y 是二维数组。
(2)Java 中多维数组不必都是规则矩阵形式