Ly Maneug Ly Maneug - 13 days ago 9
Java Question

Java: What does the first index represent in 2D array?

In java, say for example I have

char[][] board
, what does
board.length
and
board[0].length
represent? Is
board.length
the length of the x axis and y axis for the
board[0].length
?

Thank you

Answer

A 2-dimensional array has no intrinsic notion of "x" and "y", or "width" and "height". A 2-dimensional array doesn't even really have the notion of being 2-dimensional: it is a 1-dimensional array of "things", where each of those things is a 1-dimensional array.

enter image description here

So a char[][] is a 1-dimensional array where every element is a char[]; and every char[] is a 1-dimensional array where every element is a char. Notice that there's not even a requirement for the contained arrays to be of the same length as each other.

As such, you can't ask "Is board.length the length of the x axis and y axis for the board[0].length?": they represent that if that's how you choose to construct and interpret your array.

Consider constructing an array like this:

char[][] board = new char[3][4];

This makes a 2-dimensional array, where all of the 3 sub-arrays have length 4.

Applying your description, it can be visually represented like this:

enter image description here

So here, the i in [i][j] represents the x-coordinate, and the j represents the y-coordinate. Hence, board.length would be the x size, and board[0].length would be the y size.

But here's another way of interpreting the same 2-dimensional array, where the x- and y-axes are transposed.

enter image description here

Now, the i in [i][j] represents the y-coordinate, and the j represents the x-coordinate. Hence, board.length would be the y size, and board[0].length would be the x size.

Neither is right, neither is wrong. It depends upon what you're trying to represent as to which you choose.