数组

113 阅读4分钟

在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] 
    } 
}

与一维数组不同的是,二维数组的存储可以是不规则的,二维数组中的各行可以包含不同数量的元素,即列数可以不同。不规则数组常用于表示稀疏矩阵、非矩形数据结构等场景,其中各行的元素数量不同。