首页 > 编程笔记 > Java笔记 阅读:9

Java二维数组的创建和使用(非常详细,附带实例)

现实生活中有很多数据都是以表格的形式展示的,此时如果用一维数组来存储则会很麻烦,于是有了二维数组。

二维数组分为行和列两个维度,一个行数为 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);
    }
} 

相关文章