int A[2][3]={{1,2,3},{4,5,6}};
2D 配列は、次のようにメモリに格納されます。行 0 のエントリが最初に格納され、次に行 1 が格納されます。

2-D 配列は、n 個のブロックの連続したブロックとして表され、それぞれのサイズは m です (つまり、各ブロックに m 個の整数 (または任意のデータ型) を保持できます)。エントリは上記のようにメモリに格納されます。ここで、n は行数を表し、m は列数を表します。
Java の場合:
すべての配列と同様に、配列にメモリを割り当てるには new キーワードを使用する必要があります。例えば、
int[][] a = new int[2][4];
この 2 次元配列には、2 つの行と 4 つの列があります。これにより、実際には 3 つのオブジェクトが割り当てられます。実際の行配列のそれぞれを保持する 2 つの要素からなる 1 次元配列と、行の内容を表す 4 つの要素からなる 2 つの 1 次元配列です。
+-----+ +-----+-----+-----+-----+
|a[0] | -> | [0] | [1] | [2] | [3] |
| | +-----+-----+-----+-----+ In Java two-dimensional arrays are implemented is a
one-dimensional array of one-dimensional arrays -- like this.
+-----+
| | +-----+-----+-----+-----+
|a[1] | -> | [0] | [1] | [2] | [3] |
+-----+ +-----+-----+-----+-----+
あなたの場合:
double[][] array2D = new double [max][1]
これにより、実際には max+1 個のオブジェクトが割り当てられます。実際の行配列のそれぞれを保持する max 要素の 1 次元配列と、行の内容を表す 1 要素の max 1 次元配列です。
私が間違っているかどうか教えてください。