在JAVA中,数组的元素可以是任何已存在的类型(包括数组);因此,一个一维数组又可以作为另一个一维数组的元素;在JAVA中,元素是一维数组的数组被称为二维数组。
1)声明二维数组变量并创建二维数组
下面是声明二维数组的语法:
数据类型[][] 数组名;
或者
数据类型 数组名[][]; //允许这种方式,但并不推荐使用它
2)获取二维数组的长度
二维数组实际上是一个数组,它的每个元素都是一个一维数组。数组x的长度是数组中元素的个数,可以用x.length获取该值。元素x[0],x[1],...,x[x.length-1]也是数组。可以使用x[0].length,x[1].length,...,x[x.length-1].length获取它们的长度。
3)锯齿数组
二维数组中的每一行本身就是一个数组,因此,各行的长度就可以不同。这样的数组称为锯齿数组。
语法格式:
类型名[][] 数组名 = {{初值n1,...初值nm},{...},...};
例如,
int[][] a = {{1,2,3},{3,4,5},{5,6,7},{7,8,9}};
例如,矩阵的简单处理:
public class Test { public static void main(String[] args) { //按矩阵形式输出数组元素、计算正对角线元素之和 int[][] a = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } }; int i, j, diagonal_sum = 0; //按矩阵形式输出数组元素 for (i = 0; i < a.length; i++) { for (j = 0; j < a[i].length; j++) System.out.print(a[i][j] + "\t"); //换行 System.out.println(); } //计算正对角线元素之和 for (i = 0; i < a.length; i++) for (j = 0; j < a[i].length; j++) { if (i == j) { diagonal_sum += a[i][j]; } System.out.print("正对角线元素之和是:" + diagonal_sum); } } }
说明:
a.length的值是数组a的长度;
a[i].length的值是数组a中第i行的长度。
由于数组是被作为对象来处理的,因此,数组名作为方法的参数时,形参数组名引用的就是实参数组实例了。
例如,数组名作为方法参数的示例——数组的排序:
public class Test { public static void main(String[] args) { int[] a = { 3, 2, 6, 0, 1, 4, 9, 7, 8, 5 }; sort(a); for (int i = 0; i < a.length; i++) { System.out.println(a[i] + "\t"); } } static void sort(int[] arr) { int i, j, k, x, temp; for (i = 0; i < arr.length - 1; i++)//采用“选择排序”法 { x = arr[i]; k = i; for (j = i + 1; j < arr.length; j++) if (arr[j] > x) { x = arr[j]; k = j; } temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } } }
在以上的了解中,我们知道在Java中,可以创建n维数组,其中n是任意整数。
可以对二维数组变量的声明以及二维数组的创建方法进行推广,用于声明n维数组变量和创建n>=3的n维数组。
例如,语法声明一个三维数组变量scoers,创建一个数组并将它的引用赋值给scores:
double[][][] scores= new double[10][24][2];
多维数组实际上是一个数组,它在每个元素都是另一个数组。