Multi-dimensional arrays in Java are simply arrays of arrays.

Creating an array of arrays such as:

char lines[][] = new char[8][20];

produces the following:

What do you think the following will print?

char lines[][] = new char[8][20];
System.out.println(
    "char lines[][] has " + lines.length + " elements");
System.out.println(
    "lines[0] has " + lines[0].length + " elements");
System.out.println(
    "lines[0] contains: " + lines[0]);

Click here for answer

char lines[][] has 8 elements
lines[0] has 20 elements
lines[0] contains:

What about the following?

char line[][] = new char[8][/* NOTHING */];
System.out.println(
    "char line[][] has " + line.length + " elements");
System.out.println(
    "line[0] has " + line[0].length + " elements");
System.out.println(
    "line[0] contains: " + line[0]);

Click here for answer

ERROR: java.lang.NullPointerException

Note that, because Java multidimensional arrays are arrays of arrays, they need not be ‘rectangular’. For example:

short triangle[][] = new short[10][];
for (int i = 0; i < triangle.length; i++)
{
    triangle[i] = new short[i+1];
    for (int j = 0; j < i+1; j++)
        triangle[i][j] = (short)(i + j);
}
for (int i = 0; i < triangle.length; i++)
{
    for (int j = 0; j < triangle[i].length; j++)
    System.out.print(triangle[i][j] + " ");
    System.out.println();
}

produces:

0
1 2
2 3 4
3 4 5 6
4 5 6 7 8
5 6 7 8 9 10
6 7 8 9 10 11 12
7 8 9 10 11 12 13 14
8 9 10 11 12 13 14 15 16
9 10 11 12 13 14 15 16 17 18