理解三维数组

Und*_*ned 9 java multidimensional-array

我试图围绕三维数组.我知道它们是二维数组的数组,但是我正在读的那本书让我感到困惑.

在我正在阅读的这本书的练习中,它要求我为全彩色图像制作一个三维数组.它给出了一个小例子说:

如果我们决定选择一个三维数组,这里是如何声明数组:

int[][][] colorImage = new int[numRows][numColumns][3];
Run Code Online (Sandbox Code Playgroud)

但是,这不是更有效吗?

int[][][] colorImage = new int[3][numRows][numColumns];
Run Code Online (Sandbox Code Playgroud)

其中3是rgb值,0表示红色,1表示绿色,2表示蓝色.对于后者,每个二维数组都会存储行和列的颜色值,对吧?我只是想确保我理解如何有效地使用三维数组.

任何帮助将不胜感激,谢谢.

Str*_*lok 3

顺序并不重要,实际上前一种形式更具可读性:

final const int RED = 0;
final const int GREEN = 1;
final const int BLUE = 2;

int[][][] colorImage = new int[numRows][numColumns][3];
//...

int x = getSomeX();
int y = getSomeY();

int redComponent = colorImage[x][y][RED];
int greenComponent = colorImage[x][y][GREEN];
int blueComponent = colorImage[x][y][BLUE];
Run Code Online (Sandbox Code Playgroud)