声明二维数组变置并创建二维数组
要点提示 : 二维數组中的元素通过行和列的下标来访问 。
下面是声明二维数组的语法 :
数据类型 [ ] [] 数组名 :
或者
数据类型 数组名 [ ][ ] ; // 允许这种方式 , 但并不推荐使用它
可以使用这个语法创建 5 x 5 的 int 型二维数组 , 并将它陚值给 matHx :
matrix * new int [ 5 ][ 5 ];
瞥告 : 使用 matrix [ 2 , l ] 访问行下标为 2 、 列下标为丨的元素是一种常见错误 。 在 Java 中 ,每个下标必须放在一对方括号中 。
获取二维数组的长度
二维数组实际上是一个数组 , 它的每个元素都是一个一维数组 。 数组 X 的长度是数组中元素的个数 , 可以用 x . length 获取该值 。 元素 x [ 0 ] , x [ l ] , … , x [ x . length - l ] 也是数组 。可以使用 x [ 0 ] . length , x [ l ] . length , … , x [ x . length - 1 ] • length 获取它们的长度。
例如 : 假设 x = new int [ 3 ] [ 4 ] , 那么 x [ 0 ] 、 x [ l ] 和 X [ 2 ] 都是一维数组 , 每个数组都包含 4 个元素 , 如图 8 - 2 所示 。 x . length 为 3 , x [ 0 ] . length 、 x [ l ] . length 和 x [ 2 ] • length都是 4 。
锯齿数组
二维数组中的每一行本身就是一个数组 , 因此 , 各行的长度就可以不同 。 这样的数组称为锯齿数组 ( ragged array ) 。 下面就是一个创建锯齿数组的例子 :
从上图中可以看到 , triangleArray [ 0 ] . length 的值为 5 , triangleArray [ l ] . length 的值为4 , triangleArray [ 2 ] . length 的值为 3 , triangleArray [ 3 ] . length 的值为 2 , triangleArray [ 4 ] .length 的值为 1 。
如果事先不知道锯齿数组的值 , 但知道它的长度 , 正如前面讲到的 , 可以使用如下所示的语法创建锯齿数组 :
注意 : 使用语法 new int [ 5 ] [ ] 创建数组时 , 必须指定第一个下标 。 语法 new int [ ] [ ]是错误的 。
处理二维数组
要点提示 : 嵌套的 for 循环常用于处理二维数组.
将二维数组传递给方法
要点提示 : 将一个二维数组传递给方法的时候 , 数组的引用传递给了方法 。
可以像传递一维数组一样 , 给方法传递二维数组 。 也可以从一个方法返回一个数组 。 程序清单 8 - 1 给出一个具有两个方法的示例 。 第一个方法 , getArrayO , 返回一个二维数组 ;第二个方法 , sum ( 彳 nt [ ] [ ] m ) , 返回一个矩阵中所有元素的和 。
多维数组
要点提示 : 二维数组由一个一维数组的数组组成 , 而一个三维数组可以认为是由一个二维数组的数组所组成 。
在前一节中 , 我们使用二维数组表示矩阵或者表格 。 有时 , 可能还需要表示 / n维的数据结构 。 在 Java 中 , 可以创建维数组 , 其中 n是任意整数 。
可以对二维数组变量的声明以及二维数组的创建方法进行推广 , 用于声明多 3 的 n 维数组变量和创建 《 维数组 。 例如 , 可以采用一个三维数组来存储一个具有六个同学以及五门考试的班级成绩 , 其中每门考试有两部分 ( 多选题以及论述 ) 。 下述语法声明一个三维数组变量 scores , 创建一个数组并将它的引用陚值给 scores :
多维数组实际上是一个数组 , 它的每个元素都是另一个数组 。 三维数组是由二维数组构成的数组 , 每个二维数组又是一维数组的数组 。 例如 , 假设 x = new int [ 2 ] [ 2 ] [ 5 ] , 则 x [ 0 ]和 x [ l ] 是二维数组 , x [ 0 ] [ 0 ] 、 x [ 0 ] [ l ] 、 x [ l ] [ 0 ] 和 x [ l ] [ l ] 都是一维数组, 而且它们都含 5 个元素 。 x . length 的值为 2 , x [ 0 ] . length 和 x [ l ] . length 的值为 2 , x [ 0 ] [ 0 ].length、x [ 0 ] [ l ] . length , x [ l ] [ 0 ] . length 和 x [ l ] [ 1 ] . length 的值为 5 。