程序员面试笔试通关宝典
上QQ阅读APP看书,第一时间看更新

3.3 二维数组

前面我们介绍了一维数组,一维数组与二维数组具有相同点。二维数组其实是一维数组的嵌套(把每一行都看作一个内层的一维数组)。

3.3.1 数组的定义

数组的定义有三种格式,分别如下:

1)第一种定义格式

    int [] [] arr = new int [3][4];

arr里面包含3个数组,每个数组里面有4个元素。

以上代码相当于定义了一个3×4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一个长度为4的数组。

2)第二种定义格式

    int [] [] arr = new int [3] [];

这种方式和第一种类似,只是数组中每个元素的长度不确定。

3)第三种定义格式

    int [] [] arr = {{1,2}, {3,4,5,6}, {7,8,9}};

上述二维数组中定义了3个元素,这3个元素都是数组,分别为{1,2}、{3,4,5,6}、{7,8,9}。

3.3.2 数组的声明

二维数组就是特殊的一维数组,其中每个元素都是一个一维数组,例如:

    String str[][]=new String[3][4];

二维数组的动态初始化有以下两种方式:

(1)直接为每一维分配空间,格式如下:

    type arryName = new type [arraylength1] [arraylength2]

type可以为基本数据类型和复合数据类型。

arraylength1和arraylength2必须为正整数,arraylength1为行数,arraylength2为列数。

例如:

    int a [] [] =new int [2][3];

上述二维数组a可以看成一个两行三列的数组。

(2)从最高维开始,分别给每一维分配空间,例如:

    String s [] [] =new String [2] [];
    s [0] =new String [2];
    s [1] =new String [3];
    s [0][0] =new String("Good");
    s [0][1] =new String("Luck");
    s [1][0] =new String("to");
    s [1][1] =new String("you");
    s [1][2] =new String ("!");

注意“s[0]=new String[2]”和“s[1]=new String[3]”是为最高维数组分配引用空间,也就是为最高维限制能保存数据的最大长度,然后再为每个数组元素单独分配空间,即“s[0][0]=new String(“Good”);”等操作。