Java二维数组的创建和使用(非常详细,附带实例)
现实生活中有很多数据都是以表格的形式展示的,此时如果用一维数组来存储则会很麻烦,于是有了二维数组。
二维数组分为行和列两个维度,一个行数为 3、列数为 6 的二维数组可以存放 18 个元素,数组中的每个元素都需要通过行和列两个索引来访问,行的索引范围是 0~2,列的索引范围是 0~5,如下图所示。

图 1 二维数组
二维数组可以看成一维数组的延伸,它的每一行都可以看成一个一维数组。
二维数组的创建与一维数组的类似,通过 new 关键字来创建,具体语法如下:
下面是创建二维数组的例子:
实际开发时,完全可以将声明与创建合并到一起,如下所示:
前两种方式的语法如下:
下面展示了如何用大括号来初始化二维数组:
第三种方式的例子如下所示:
二维数组好比一张表格,要定位一张表的某个位置需要行和列两个索引,所以我们可以通过“数组变量名[行索引][列索引]”来访问二维数组元素。
例如,下面实例程序输出结果为 java 技术和虚拟机:
第一种方式使用数组的 length 属性作为条件,先通过 length 属性获取二维数组的行数,然后通过行数组的 length 属性获取对应行的列数,两个 for 循环嵌套起来就可以实现对二维数组的遍历。
第二种方式则是先通过“for(数据类型[] 变量名:数组变量名)”获取二维数组的每一行(一维数组),再通过“for(数据类型 变量名:行数组变量名)”分别访问每一行的元素。
下面程序展示了二维数组的两种遍历方式:
二维数组分为行和列两个维度,一个行数为 3、列数为 6 的二维数组可以存放 18 个元素,数组中的每个元素都需要通过行和列两个索引来访问,行的索引范围是 0~2,列的索引范围是 0~5,如下图所示。

图 1 二维数组
二维数组可以看成一维数组的延伸,它的每一行都可以看成一个一维数组。
Java二维数组的声明与创建
二维数组的声明语法如下:数据类型[][] 数组变量名; 数据类型 数组变量名[][];有两种声明方式,一种是在数据类型后面加两个中括号,另一种则是在数组变量名后面加两个中括号。
如下是一个声明二维数组的示例:与一维数组相比,二维数组多了一个中括号。
int[][] arr; int arr2[][]; float[][] arr3; char arr4[][]; String[][] arr5;
二维数组的创建与一维数组的类似,通过 new 关键字来创建,具体语法如下:
数组变量名 = new 数据类型[行数][列数];创建二维数组后就相当于分配了一个指定行数和列数的内存空间,而所声明的数组变量名则指向这块内存空间。
下面是创建二维数组的例子:
arr = new int[20][20]; arr5 = new String[10][30];
实际开发时,完全可以将声明与创建合并到一起,如下所示:
int[][] arr = new int[20][20]; String[][] arr5 = new String[10][30];
Java二维数组的初始化与访问
与一维数组一样,二维数组的初始化也有三种方式,前两种是以大括号的方式,第三种是二维数组被创建后再进一步对每个元素进行赋值操作,注意数组被创建后就有了默认值。前两种方式的语法如下:
数据类型[][] 数组变量名 = new 数据类型[][]{{},{}...{}}; 数据类型[][] 数组变量名 = {{},{}...{}};主要通过嵌套大括号来指定数组内的每个元素值,外层的大括号包含若干内嵌的大括号,它们以逗号进行分隔,每个内嵌的大括号就是一个一维数组。其实很好理解,将多个一维数组组合起来就是二维数组。
下面展示了如何用大括号来初始化二维数组:
int[][] arr = new int[][] { { 1, 3, 5, 7 }, { 9, 11, 2, 4 }, { 6, 8, 10, 12 } }; int[][] arr2 = { { 1, 3, 5, 7 }, { 9, 11, 2, 4 }, { 6, 8, 10, 12 } };
第三种方式的例子如下所示:
int[][] arr3 = new int[3][4]; arr3[0][0] = 1; arr3[0][1] = 3; arr3[0][2] = 5; arr3[0][3] = 7; arr3[1][0] = 9; arr3[1][1] = 11;
二维数组好比一张表格,要定位一张表的某个位置需要行和列两个索引,所以我们可以通过“数组变量名[行索引][列索引]”来访问二维数组元素。
例如,下面实例程序输出结果为 java 技术和虚拟机:
public class TwoDimentionArrayTest3 { public static void main(String[] args) { String[][] arr = { { "java", "编程", "c++", "编程", "python", "语言" }, { "c#", "it", "技术", "计算机", "屏幕", "鼠标" }, { "软件", "硬件", "服务器", "浏览器", "编译", "虚拟机" } }; System.out.println(arr[0][0]); System.out.println(arr[1][2]); System.out.println(arr[2][5]); } }
Java二位数组的遍历
对二维数组的遍历有两种方式,两种方式都使用了两个 for 循环嵌套语句来实现。第一种方式使用数组的 length 属性作为条件,先通过 length 属性获取二维数组的行数,然后通过行数组的 length 属性获取对应行的列数,两个 for 循环嵌套起来就可以实现对二维数组的遍历。
第二种方式则是先通过“for(数据类型[] 变量名:数组变量名)”获取二维数组的每一行(一维数组),再通过“for(数据类型 变量名:行数组变量名)”分别访问每一行的元素。
下面程序展示了二维数组的两种遍历方式:
public class TwoDimentionArrayTest4 { public static void main(String[] args) { String[][] arr = { { "java", "编程", "c++", "编程", "python", "语言" }, { "c#", "it", "技术", "计算机", "屏幕", "鼠标" }, { "软件", "硬件", "服务器", "浏览器", "编译", "虚拟机" } }; //第一种方式 for (int i = 0; i < arr.length; i++) for (int j = 0; j < arr[i].length; j++) System.out.println(arr[i][j]); //第二种方式 for (String[] oneArr : arr) for (String s : oneArr) System.out.println(s); } }