黑马程序员技术交流社区

标题: 一个数组题问题 [打印本页]

作者: hg3093483    时间: 2013-3-24 07:31
标题: 一个数组题问题
本帖最后由 hg3093483 于 2013-3-24 20:14 编辑

使用int name[][]=new int [3][3];和使用int name2[][]=new int[3][],这两种有什么区别?
作者: 丁一    时间: 2013-3-24 07:44
int name[][]=new int [3][3]//    直接为每一维分配空间,如:
int name2[][]=new int[3][] //从最高维开始,分别为每一维分配空间,如:
以后可以这样使用,这样定义不同长度就可以了
name2[0]=new int[3];
name2[1]=new int[3];


作者: xuqangxing    时间: 2013-3-24 09:08
int name[][]=new int [3][3]指二维数组name是由3个长度为3的一维数组name[0],name[1],name[2]组成的,可以使用
int name2[][]=new int[3][]指创建了二维数组name2,由3个一维数组name2[0],name2[1],name2[2]组成,但它们的长度没有确定,即这些一维数组还没有分配内存空间,所以name2还不能使用
作者: 燕国庆    时间: 2013-3-24 09:28
二维数组其实就是在一维数组的基础上形成的,就是在一维数组的每个单元上存放的又是一个一位数组,因此构成了二维数组,

int[][] a=new int[3][3]; //这句话定义了一个二维数组,并且初始化了此二维数组的每一维,从一维到二维进行的初始化,此时第二维的位置上已经有了默认值:0   。
int[][] b=new int[3][];//这句话同时也定义了一个二维数组,但只是初始化到了一维,第二维的每个位置存储的是一个一维数组,此时因为一位数组是一个引用数据类型,
                                   //因此在二维数组的第二维的默认初始值是null  。
int[] c=new int[3]; //定义了一个一位数组,初始化值为:0  。
  
  System.out.println(a[1][1]);//  输出的是一维位置的初始值:0  。
System.out.println(a[1);//  输出的是二维数组第二维第一个位置上的地址值(引用)
  //System.out.println(b[1][1]);  //此时的二维数组的第二维还没有进行初始化,所以会出现异常错误
  System.out.println(b[1]);  //此时在二维数组的第二维的默认初始值是null  ,因为第二维的每个位置存储的是一个一维数组,此时因为一位数组是一个引用数据类型
  System.out.println(c[1]);//输出一维数组的默认值:0  。




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