Java私塾跟我学系列――JAVA篇 第三章 数组和排序算法

 

四、多维数组                                                                     

1.多维数组的基础知识

Java编程语言没有象其它语言那样提供多维数组。因为一个数组可被声明为具有任何基础类型,所以你可以创建数组的数组(和数组的数组的数组,等等)。一个二维数组如下例所示:

int twoDim [][] = new int [4][];

twoDim[0] = new int[5];

twoDim[1] = new int[5];

首次调用new而创建的对象是一个数组,它包含4个元素,每个元素对类型array of int的元素都是一个null引用并且必须将数组的每个点分别初始化。

 

因为这种对每个元素的分别初始化,所以有可能创建非矩形数组的数组。也就是说,twoDim的元素可按如下方式初始化:

twoDim[0] = new int [2]

twoDim[1] = new int [4];

    twoDim[2] = new int [6];

    twoDim[3] = new int [8];

 

由于此种初始化的方法烦琐乏味,而且矩形数组的数组是最通用的形式,因而产生了一种”速记”方法来创建二维数组。例如:

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

可被用来创建一个每个数组有4个整数类型的3个数组的数组。

 

对二维数组 int [][] a = new int[3][4];

可以理解成为如下图所示:

 

a[ 0 ][ 0 ]

a[ 1 ][ 0 ]

a[ 2 ][ 0 ]

a[ 0 ][ 1 ]

a[ 1 ][ 1 ]

a[ 2 ][ 1 ]

a[ 0 ][ 2 ]

a[ 1 ][ 2 ]

a[ 2 ][ 2 ]

a[ 0 ][ 3 ]

a[ 1 ][ 3 ]

a[ 2 ][ 3 ]

行的下标值

列的下标值

注意:尽管声明的格式允许方括号在变量名左边或者右边,但此种灵活性不适用于数组句法的其它方面。例如: new int [][4]是非法的。

 

2.示例

class FillArray

{

    public static void main (String args[])

    {

        int[ ][ ] matrix = new int[4][5]; //二维数组的声明和创建

        for (int row=0; row < 4; row++)

        {

            for (int col=0; col < 5; col++)

            {

                matrix[row][col] = row + col; //二维数组的访问,为元素赋值

            }

        }

    }

}

当然也可以直接定义并赋值,如下:

double[ ][ ] c =

    {

       {1.0, 2.0, 3.0, 4.0},

       {0.0, 1.0, 0.0, 0.0},

       {0.0, 0.0, 1.0, 0.0}

    };

从上面可以看得很清楚,二维数组其实就是一维的一维数组。

 

3.多维数组的本质

N维数组就是一维的N-1维数组,比如:三维数组就是一维的二维数组。

       三维以至多维数组都是一个思路,一维数组——〉二维数组——〉三维数组

的实例:

class Fill3DArray

{

    public static void main (String args[])

    {

        int[ ][ ][ ] M = new int[4][5][3];

        for (int row=0; row < 4; row++)

        {

            for (int col=0; col < 5; col++)

            {

                for (int ver=0; ver < 3; ver++)

                {

                    M[row][col][ver] = row + col + ver;

                }

            }

        }

    }

}

Java私塾跟我学系列——JAVA  网址:http://www.javass.cn  电话:010-68434236

你可能感兴趣的:(java,算法,职场,休闲)