二维数组

声明二维数组
在Java中二维数组被看成是数组的数组,例如二维数组为一个特殊的一维数组,其每个元素又是一个一维数组,在Java中不直接支持二维数组,但允许定义数组元素也是一维数组的一维数组,以达到同样的效果。
语法:
float boy[][];
char array[][];
float:数组类型。
boy:数组名称。
char:数组类型。
array:数组名称。
数组boy的元素可以存放float型数据。


创建二维数组
二维数组的创建实质也是在内存中为数组开辟存储空间。例如:
语法:
int[][] array = {{1, 2, 3}, {4, 5, 6},};
array:数组名称。
上述代码中定义了一个二维数组,实质上此二维数组相当于一个两行三列的矩阵,当需要取多维中的值时,可以使用下标来表示。例如:
语法:
array[i-1][j-1]
i:数组的行数。
j:数组的列数。

用这个二维数组来说明,取第3行第二列的值应使用array[2][1]来表示。因为数组下标起始值为0,所以行列下标需要减一。一般地,一个含有m行,n列的数组称为m行n列数组。
在使用二维数组对象时,注意length代表长度,数组名后直接加上length(如array.length),表示的是数组有几行,指定索引后加上length(如array[0].length),指的是该行拥有多少个元素,也就是列数。

         列0          列1             列2               列3
行0   array[0][0]   array[0][1]     array[0][2]       array[0][3]

行1   array[1][0]   array[1][1]     array[1][2]       array[1][3]

行2   array[2][0]   array[2][1]     array[2][2]       array[2][3]

public class MutiArray {
    public static void main(String[] args) {
         int[][] a1 = {{1, 2, 3}, {4, 5, 6},};                                                  //声明二维数组
         for (int i = 0; i < a1.length; i++)
            for (int j = 0; j < a1[i].length; j++) {
                     System.out.println("a1[" + i + "][" + j + "]=" + a1[i][j]);          /打印二维数组
               }
    }
}

 

初始化二维数组
二维数组的初始化和一维数组的初始化一样,基本上也是使用下列语法来指定元素初始值,例如:
语法:
array= new int[]...[]{第一个元素的值,第二个元素的值,第三个元素的值,...};
或用于对象数组的语法:
array= new int[]...[]{new构造方法(参数列),new构造方法(参数列),...};
array:数组名称。
new:实例化对象语句。
int:数组元素类型。

同样地,以上两者若配合定义数组变量的语法使用,都可以省略“{}”前面的“new类型[]...[]”。由于这是多维数组,因此并非只用一个“{}”即可,而要视数组的维度和索引个数来决定如何使用大括号“{}”。以二维数组为例,若希望第一维有3个索引、第二维有两个索引,就要依下列语法来指定元素的初始值,例如:
语法:
Integer[][] array = new Integer[][]{                                      //声明二维数组
                        {new Integer(1), new Integer(2)},
                        {new Integer(3), new Integer(4)},
                        {new Integer(5), new Integer(6)},
                 };
array:数组名称。
int:数组元素类型。
new:实例化对象语句。
Integer:数组元素类型。

 

使用二维数组
二维数组在实际应用中非常广泛。

请读者看下面代码,演示如何使用二维数组,本例程用于实现打印一组数据中的最大值与最小值,操作步骤如下。

(1)创建MutiArray3类,在main()方法中输入以下程序关键代码。
src/com/wsy/MutiArray3.java关键代码:
MutiArray3 m=new MutiArray3();
System.out.println("最少的分数为:"+m.minimum());             //调用minimum()方法,打印数组中最小值
System.out.println("最多的分数为:"+m.maximum());            //调用maximum()方法,打印数组中最大值
(2)在MutiArray3类中定义一个二维数组,程序代码如下:
int grades[][]={                                                      //定义二维数组
                     {77,68,86,73},
                     {96,87,89,81},
                     {70,90,86,81}
         };
(3)在MutiArray3类中定义两个方法,分别取数组中的最大值与最小值,其中minimum()方法为取数组中的最小值,maximum()方法为取数组中最大值。
src/com/wsy/MutiArray3.java关键代码:
public int minimum(){                                                          //取最小值方法
    int lowGrade=grades[0][0];
    for(int row=0;row<grades.length;row++){
         for(int column=0;column<grades[row].length;column++){
               if(grades[row][column]<lowGrade)
                     lowGrade=grades[row][column];                                         //取数组中最小值赋予lowGrade变量
         }
    }
    return lowGrade;                                                          //返回lowGrade变量
}
public int maximum(){                                                          //取最大值方法
    int highGrade=grades[0][0];
    for(int row=0;row<grades.length;row++){
         for(int column=0;column<grades[row].length;column++){
               if(grades[row][column]>highGrade)
                     highGrade=grades[row][column];                                 //取数组中最小值赋予highGrade变量
         }
    }
    return highGrade;                                                          //返回highGrade变量
}
上述代码中提供了一个int型的3行4列的二维数组,此数组提供了一组考试分数,每一行分别代表一个年级。
l         笔者在类中定义两个方法,分别为minimun()方法与maximum()方法,即取出数组中的最大值与最小值。在取最小值的方法中,首先取得第一行第一列的值并放入一个变量中,然后使用for循环语句逐一取出数组中的每一个元素,与此变量进行比较,当取出的值小于此变量的值,那么将这个值赋给此变量,最后方法返回此变量,即为最小值。
l         同理,取最大值时,当取出数组中的值大于变量时,将值赋予变量,最后返回变量即为最大值。
说明:
此类中定义了两个方法,在主函数中引用这两个方法时首先要实例化一个对象,也就是使用new语句,然后使用这个对象引用这两个方法,当然,这是针对no-static方法而言的,对待static方法,则使用类名.方法名调用即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值