Java JDK 5.0学习笔记(二维数组)

本文介绍了Java中的二维数组,包括如何定义、初始化和访问二维数组。通过范例5.5和5.6展示了二维数组的存取方式,解释了arr.length和arr[0].length的含义。还提到了不规则数组的概念,即每个维度长度可以不同的二维数组。
摘要由CSDN通过智能技术生成

5.1.2 二维数组对象

一维数组使用数组名与一个索引来指定存取数组中的元素,您也可以定义二维数组。二维数组使用数组名与两个索引来指定存取数组中的元素。其定义方式与一维数组类似:

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

从上面这个程序片段,就可以清楚地看出二维数组的索引方式。其定义了2(Row)3(Column)的数组,使用{ }与适当的断行可以协助您指定数组初值。范例5.5简单地示范了二维数组的存取。

Ü 范例5.5  TwoDimArray.java

public class TwoDimArray {

    public static void main(String[] args) {

        int[][] arr =   {{1, 2, 3},

                          {4, 5, 6}};

 

        for(int i = 0; i < arr.length; i++) {

            for(int j = 0; j < arr[0].length; j++)

                System.out.print(arr[i][j] + " ");

            System.out.println();

        }

    }

}

执行结果:

 

1 2 3

4 5 6

 

数组值arr[i][j]表示指定的是第i行第j列的值。在使用二维数组对象时,注意length所代表的长度,数组名后直接加上length(arr.length),所指的是有几行(Row);指定索引后加上length(arr[0].length),指的是该行所拥有的元素,也就是列(Column)数目。

 

lang=EN-US> 

 

良葛格的话匣子:

初学者对于二维数组的了解到这里就可以了。接下来的内容是高级的二维数组说明,初学者可以先试着了解,如果觉得有点难,可以先跳过待以后对象观念更清楚后,再来看接下来的内容。

要了解范例5.5length成员各代表哪一个长度,必须从对象配置的角度来了解。以对象的方式来配置一个二维数组对象,要使用以下的语法:

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

上面这个程序片段中,配置了23列的二维数组对象,由于数据类型是int,所以数组元素的预设元素为0

来细究一下二维数组的配置细节,其实arr[0]arr[1]是两个一维数组对象,其长度各为3,而arr类型是int[] [],内容值为arr[0]arr[1]。其关系如图5-1所示。

5-1  二维数组的配置关系

从图5-1中可以看到,arr引用int[] []类型的对象,内容包括arr[0]arr[1],而arr[0]arr[1]再分别引用一个一维数组对象,这也就是范例5.5使用的arr.lengtharr[0].length所表示的长度意义。有了数组配置的观念,可以改写范例5.5为范例5.6,让程序中的一维数组变量foo来依次取出arr[0]arr[1]中的每个元素值,执行结果是相同的。

Ü 范例5.6  TwoDimArray2.java

public class TwoDimArray2 {

    public static void main(String[] args) {

        int[][] arr = {{1, 2, 3},

                            {4, 5, 6}};

 

        int[] foo = arr[0];

 

        for(int i = 0; i < foo.length; i++) {

            System.out.print(foo[i] + " ");

        }

        System.out.println();

 

        foo = arr[1];

 

        for(int i = 0; i < foo.length; i++) {

            System.out.print(foo[i] + " ");

        }

        System.out.println();

    }

}

如果在使用new配置二维数组后想要一并指定初值,则可以编写如下:

int[][] arr = new int[][] {{1, 2, 3}, 
                           {4, 5, 6}};

同样的道理,也可以定义三维以上的数组,如果要定义同时初始元素值,可以使用以下的简便语法:

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

上面这个程序片段所定义的三维数组是2×2×3,您将之想象为两面2×3二维数组交叠在一起就是了。每一面的元素如图5-2所示。

5-2  三维数组的配置关系

如果要动态定义三维数组,就使用以下的语法:

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

三维以上的更多维数组的定义,在Java中也是可行的,但并不建议使用。使用多维数组会让元素索引的指定更加困难,此时适当地将数据加以分割,或是使用其他的数据结构来解决,会比直接定义多维数组实在。

通过以上的说明,接下来讨论“不规则数组”。数组的维度不一定要是四四方方的,您也可以制作一个二维数组,而每个维度的长度并不相同。范例5.7是一个简单的示范。

Ü 范例5.7  TwoDimArray3.java

public class TwoDimArray3 {

    public static void main(String[] args) {

        int arr[][];

 

        arr = new int[2][];

        arr[0] = new int[3];

        arr[1] = new int[5];

 

        for(int i = 0; i < arr.length; i++) {

            for(int j = 0; j < arr[i].length; j++)

                arr[i][j] = j + 1;

        }

 

        for(int i = 0; i < arr.length; i++) {

            for(int j = 0; j < arr[i].length; j++)

                System.out.print(arr[i][j] + " ");

            System.out.println();

        }

    }

}

这个例子只是先前说明的概念延伸,在这个例子中,数组第一行的长度是3,而第二行的长度是5。执行结果如下:

 

1 2 3

1 2 3 4 5

 

程序编写风格:

在定义二维数组时,也可以使用int arr[][]这样的定义方式。这种定义方式源于C/C++中对数组定义的语法,不过在Java中建议使用int[][] arr这样的定义方式。同样地,也可以使用int arr[][][]这样的方式定义三维数组。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值