多维数组
多维数组是指数组中包含其他数组作为其元素的数组,也就是数组的元素可以是数组本 身。常见的多维数组包括二维数组、三维数组等。在 JAVA 中,多维数组的声明和初始化方式与一维数组类似,只需在类型后面添加额外 的方括号来表示维度的数量
二维数组的定义
二维数组:如果一个一维数组中的各元素仍然是一维数组,那么这个数组被称为二维数组。 作为元素的每个数组长度可以不相等。例如:
// 声明一个整型二维数组e
int e[][] = {
// 第一行,包含3个元素
{1, 2, 3},
// 第二行,包含1个元素
{4},
// 第三行,包含4个元素
{5, 6, 7, 8}
};
(1)先声明,后初始化 :
声明:
数组类型 数组名[][] 数组类型[][] 数组名
初始化:
数组名 = new 数组类型[数组长度][数组长度]( 一维长度必须指定,二维长度可以省略)
数组名 = new 数组类型[][]{数组元素表列} 数组名[下标] = new 数组类型[数组长度] 例如:
// 声明一个二维整型数组变量a
int[][] a;
// 初始化a为一个有1行2列的二维数组
a = new int[1][2];
// 声明一个二维整型数组变量b
int[][] b;
// 初始化b为一个有3行的二维数组,但每行的列数尚未确定
b = new int[3][];
// 为b数组的第0行分配一个有4个元素的数组
b[0] = new int[] { 1, 2, 3, 4 };
// 声明一个二维整型数组变量c,并立即初始化
// c是一个包含2行的二维数组,第0行有4个元素,第1行有2个元素
int[][] c = new int[][] {
{ 3, 23, 2, 14 }, // 第0行,包含4个元素
{ 1, 2 } // 第1行,包含2个元素
};
(2)声明同时初始化 :
数据类型[][] 数组名 = new 数组类型[数组长度][数组长度];
数据类型[][] 数组名 = new 数组类型[][]{数组元素表列};
数据类型[][] 数组名 = {数组元素表列}; 例如:
// 声明并初始化一个二维数组d,它有3行,但每行的列数尚未指定
int d[][] = new int[3][];
// 声明并初始化一个二维数组e,它有2行
// 第0行有3个元素,第1行有3个元素
int e[][] = new int[][]{{1,2,3},{4,5,5}};
// 声明并初始化一个二维数组f,它有3行
// 第0行有3个元素,第1行有1个元素,第2行有4个元素
int f[][] = {{1,2,3},{4},{5,6,7,8}};
二维数组的遍历
使用嵌套的循环来遍历每个元素。示例如下:
public class lianx {
public static void main(String[] args) {
// 声明并初始化一个二维数组a,包含3行
// 第0行有3个元素,第1行有1个元素,第2行有4个元素
int[][] a ={{1,2,3},{4},{5,6,7,8}};
// 外层循环遍历二维数组的每一行
for(int i = 0; i < a.length; i++) {
// 内层循环遍历当前行的每一个元素
for (int j = 0; j < a[i].length; j++) {
// 打印当前元素
System.out.print(a[i][j]);
// 打印一个空格作为元素之间的分隔符
System.out.print(" ");
}
System.out.println();
}
}
}
for-each循环遍历二维数组。示例如下:
public class lianx {
public static void main(String[] args) {
// 声明并初始化一个二维数组a,包含3行
// 第0行有3个元素,第1行有1个元素,第2行有4个元素
int[][] a = {{1, 2, 3}, {4}, {5, 6, 7, 8}};
// 使用for-each循环遍历二维数组的每一行
for (int[] row : a) {
// 再次使用for-each循环遍历当前行的每一个元素
for (int element : row) {
// 打印当前元素,并在其后添加一个空格
System.out.print(element + " ");
}
System.out.println();
}
}
}
来做一道练习题:
有一个整数数组,其中存放着序列 1,3,5,7,9,11,13,15,17,19。请将该序列倒序存放并输出
public class lianx {
public static void main(String[] args) {
// 初始化一个整数数组,包含序列 1, 3, 5, 7, 9, 11, 13, 15, 17, 19
int[] a = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19};
// 使用System.arraycopy来倒序存放数组
int[] b = new int[a.length];
for (int i = 0; i < a.length; i++) {
b[i] = a[a.length - 1 - i];
}
// 输出倒序后的数组
for (int value : b) {
System.out.print(value + " ");
}
}
}