所以我有這樣的一段代碼聲明一個三維數組:爲什麼我不能在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' –
所以你說我的矩陣的內存是在類的構造函數執行之前分配的?因爲它是在這個類的構造函數中初始化的。好吧,我沒有發佈構造函數,我將編輯 –