A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hg3093483 中级黑马   /  2013-3-24 07:31  /  1504 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 hg3093483 于 2013-3-24 20:14 编辑

使用int name[][]=new int [3][3];和使用int name2[][]=new int[3][],这两种有什么区别?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-24 08:28

3 个回复

倒序浏览
int name[][]=new int [3][3]//    直接为每一维分配空间,如:
int name2[][]=new int[3][] //从最高维开始,分别为每一维分配空间,如:
以后可以这样使用,这样定义不同长度就可以了
name2[0]=new int[3];
name2[1]=new int[3];

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
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还不能使用

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
二维数组其实就是在一维数组的基础上形成的,就是在一维数组的每个单元上存放的又是一个一位数组,因此构成了二维数组,

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  。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马