黑马程序员技术交流社区

标题: 关于数组 [打印本页]

作者: xiongfangyuan    时间: 2015-6-20 06:56
标题: 关于数组
1.9 数组

    1.9.5 数组中的数组

    二维数组[][]

    格式1:
    int[][] arr = new int[3][2];

    1、定义了名称为arr的二维数组。
    2、二维数组中有3个一维数组。
    3、每一个一维数组中有2个元素。
    4、一维数组的名称分别为arr[0], arr[1], arr[2]。
    5、给第一个一维数组第一个脚标位赋值为78写法是:arr[0][1] = 78;。
    6、arr存储的是二维数组的初始地址,arr[0]、arr[1]、arr[2]存储的是一维数组的初始地址。

    示例1:
class Array2Demo
{
       public static void main(String[] args){
            int[][] arr = new int[3][2];
             //直接打印二维数组
            System.out.println(arr);
             //直接打印二位数组中的角标为0的一维数组
            System.out.println(arr[0]);
             //直接打印二维数组中的角标为0的一维数组的角标为0的元素
            System.out.println(arr[0][0]);
      }
}
运行结果:[[I@c17164
[I@1fb8ee3
0
说明:打印的内容中@左边是实体的类型("["代表一维数组,"[["代表二维数组,"I"代表int类型),@右边是实体的哈希值。


示例2:打印二维数组和一维数组的长度
class Array2Demo
{
       public static void main(String[] args){
             int [][] arr = new int[3][2];
             //打印二维数组的长度,其实就是一位数组的个数
            System.out.println(arr.length );
             //打印二位数组中角标为1一位数组的长度
            System.out.println(arr[1].length );
      }
}
运行结果:
3
2



格式2:

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

    二维数组中有3个一维数组,每个一维数组都是默认初始化值null,可以对这个三个一维数组分别进行初始化。

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

    示例:
class Array2Demo
{
       public static void main(String[] args){
            int[][] arr = new int[3][];
            System.out.println(arr);
            System.out.println(arr[0]);
            System.out.println(arr[0][0]);
      }
}
运行结果:[[I@de6ced
null
空指针异常

说明:
    示例中arr[0]为null的原因是没有为它初始化一位数组。
    由于arr[0]为null,通过它获取一维数组角标为0的元素肯定会报空指针异常错误!


格式3:
    int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};

    定义一个名称为arr的二维数组,二维数组中的有三个一维数组,每一个一维数组中具体元素也都已初始化。
    第一个一维数组 arr[0] = {3,8,2};,第二个一维数组 arr[1] = {2,7};,第三个一维数组 arr[2] = {9,0,1,6};。
    第三个一维数组的长度表示方式:arr[2].length;。

    应用:求二维数组所有元素的和。
class Array2Demo
{
       public static void main(String[] args){
            int sum = 0;
             int[][] arr = {{3,1,7},{5,8,2,9},{4,1}};

             for(int x = 0; x < arr.length; x++){
                   for(int y = 0; y < arr[x].length; y++){
                        sum += arr[x][y];
                  }
            }
            System.out.println("sum = " + sum);
      }
}
运行结果
40
作者: cyd1058    时间: 2015-6-20 09:34
学习了!加油!
作者: keto    时间: 2015-6-20 09:41
学习了。。
作者: 伟大的骗子    时间: 2015-6-20 09:43
哦~顶好赞哦




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2