在Java中,数组是一种用于存储相同类型数据元素的数据结构。数组在Java中是对象,因此它们具有一些特定的属性和方法。
接下来,笔者将从数组的声明到关于数组的方法为顺序进行简单介绍:
1、声明数组
与定义变量类似,要想使用数组,需要先声明,通常采取如下操作:
例:dataType[] arrayName; // 例如:int[] numbers;
或:dataType arrayName[];// 例如:int numbers[];
需要注意的是,声明的数组内只能存放声明的数据类型的数据,例如上述注释例子,只能将int类型的数据存入其中,而不能存入double或其它类型的数据。
2、创建数组
在声明数组后,需要使用 new 关键字来创建数组对象:
例:int[] numbers = new int[5]; // 创建一个包含5个整数的数组
这里的例子中,“创建数组”与“声明数组”合并了,在实际使用中,我们也更倾向于在声明时就创建数组。当然,你也可以分开来写。
3. 初始化数组
可以在声明数组的同时进行初始化,或者在创建后进行初始化。以下是一些初始化数组的方式:
例:// 初始化并赋值 int[] numbers = {1, 2, 3, 4, 5};
或:
// 使用循环初始化数组
int[] numbers = new int[5];
for (int i = 0; i < 5; i++) {
numbers[i] = i + 1;
}
你可以使用第一个例子的方法,自由地往数组中存入数值,也可以采用第二种方法,利用 for 循环向数组中存入数值,包括之后会提到的利用Arrays类中的方法,都可以帮助我们使用数组。
值得一提的是,数组的长度在声明时就已固定,后期使用时不可以超出这个长度,否则控制台会报错,请注意。
关于数组长度,数组中的位置是以0为初始下标,到(数组长度-1)为末尾下标,例:int[] arrays = new int[10];此时arrays数组第一个数存放在arrays[0]的位置,而最后一个位置存放在array[9]的位置。
4、数组的访问和修改
我们可以将数组的值赋值给一个变量,实现对数组元素的提取,例:int value = arrayName[index];也可
以直接对数组中的某一个位置的元素进行修改,例:arrayName[index] = newValue;
5、数组的长度
我们可以通过调取数组内部属性length获得某一数组的长度,例:int length = arrayName.length;
6、数组的遍历
大多数情况,我们使用for循环或增强for循环(foreach)来实现对数组的遍历:
for循环:for (int i = 0; i < arrayName.length; i++) { // 访问 arrayName[i] }
增强for循环(foreach):for (dataType element : arrayName) { // 访问 element }
7、数组的复制
当我们想要将一个数组中的元素放到另一个数组中,就不得不考虑操作方法,像定义一个临时变量来存储显然行不通,
Java贴心的为我们准备了Arrays类,通过Arrays类中的copyOf()方法可以轻松实现,例:dataType[] newArray = Arrays.copyOf(arrayName, newArrayLength);
8、二维数组和多维数组
二维数组是一个包含其他数组的数组,读者可以想象围棋棋盘,一维数组就相当于是棋盘中的一列,只能在特定的某一列落子;而二位数组就相当于是整个棋盘,可以在棋盘中任意一个位置落子;而三维数组则相当于一个立体棋盘,落子位置受x,y,z三个坐标轴控制;至于更高维度的数组,读者可以自行想象。一般地,我们最常使用的,还是一维数组和二维数组。
二维数组的声明和赋值与一维数组类似,例:int[][] arrays = new int[index1][index2], dataType[][] twoDArray = { {val11, val12, val13}, {val21, val22, val23} };
对二维数组的遍历,可以嵌套两层for循环进行遍历,例:
for (int i = 0; i < twoDArray.length; i++) {
for (int j = 0; j < twoDArray[i].length; j++) {
// 访问 twoDArray[i][j]
}
}
与一维数组不同的是,二维数组的存储可以是不规则的,二维数组中的各行可以包含不同数量的元素,即列数可以不同。不规则数组常用于表示稀疏矩阵、非矩形数据结构等场景,其中各行的元素数量不同。