黑马程序员技术交流社区

标题: 创建二位数组的问题 [打印本页]

作者: 天ya~_琼楼    时间: 2013-12-1 18:54
标题: 创建二位数组的问题
下面代码中那一个不能够创建一个数组?
A. float []f[] = new float[6][6];
B.float f[][] = new float[][];           
C.float [6][]f = new float[6][6];
D. float [][]f = new float[6][];     


答案是B和C,B我还明白原因,但是我不知道C为什么不能够创建。请各位大神解惑,最好把A、B、C、D都解释一下,以防止我对这几项理解的错误,谢谢!

作者: Jim-剣◆﹏    时间: 2013-12-1 19:31
我在想该怎么解释
A. float []f[] = new float[6][6];
解释:其实主要的迷惑点在前面的引用变量float []f[],这个表示的是一个二维数组,其实可以拆分来看,float []表示声明一维数组变量,f[]也表示一维数组,这样写理解为一维数组的嵌套就好了,在一维数组里面再声明一个一维数组,就得到一个二维数组了...难描述,但我就是这样理解的

B.float f[][] = new float[][];   
解释:这里指明是静态声明二维数组,必须给指定数组的大小,应该为float f[][] = new float[1][1];
又或者你可以声明为动态声明二维数组,这样可以不知道数组的大小为float f[][] = new float[][];{{1.0f}{2.0f}},这样也可以
   
C.float [6][]f = new float[6][6];
解释:问题是出在前面的变量类型声明,即前面必须是数组类型,很明显“float [6][]f ”这个不属于一个数组类型,float [][]f这样才是数组类型
D. float [][]f = new float[6][];     
解释:前面的变量类型解释同上,如果需要解释就是new float[6][];  这个表示声明一个不规则的数组,可以单独为行继续声明
f[0] = new float[2]//为第一行分配2列
f[1] = new float[3]//为第二行分配3列
。。。。。

作者: 天ya~_琼楼    时间: 2013-12-1 19:43
Jim-剣◆﹏ 发表于 2013-12-1 19:31
我在想该怎么解释
A. float []f[] = new float[6][6];
解释:其实主要的迷惑点在前面的引用变量float []f[ ...

我懂了,谢谢!
作者: 简★零度    时间: 2013-12-5 22:47
下次问题解决了就把类型改成提问结束!




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