标题: 创建二位数组的问题 [打印本页] 作者: 天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