所以我有这样的一段代码声明一个三维数组:为什么我不能在Java中使用变量来声明三维数组?
public class Matrix {
private static int n;
char[][][] matrix = new char[n][n][2];
Matrix(int n){
n=3;
} }
在类的构造函数,正被用一个值初始化(假设3)。
问题是,当我尝试访问矩阵元素(让我们说矩阵[0] [0] [0]),我得到一个“ArrayIndexOutOfBoundsException”。
看来,我的矩阵中有0
长度但是,如果我尝试类似:
char[][][] matrix = new char[3][3][2]
它工作得很好,内存alocated的矩阵。
而且,在我的节目,我用在某些时候是这样的:
char[][] bidimensionalMatrix = new char[n][n];
也用得好好的,我可以访问此一个的元素了。
这是为什么?我不允许使用变量来指定三维矩阵的维度?
'N'是'0'阵列被构造时。 –
扩展Oliver的评论。未初始化的数字字段默认为'0' –
所以你说我的矩阵的内存是在类的构造函数执行之前分配的?因为它是在这个类的构造函数中初始化的。好吧,我没有发布构造函数,我将编辑 –