Question: Consider:

```
int[][] multD = new int[5][];
multD[0] = new int[10];

```

Is this how you create a two-dimensional array with 5 rows and 10 columns?

I saw this code online, but the syntax didn't make sense.

Answer: 
We can declare a two dimensional array and directly store elements at the time of its declaration as:

```
int marks[][]={{50,60,55,67,70},{62,65,70,70,81},{72,66,77,80,69}};

```

Here *int* represents integer type elements stored into the array and the array name is 'marks'. *int* is the datatype for all the elements represented inside the "{" and "}" braces because an array is a collection of elements having the same data type. 

Coming back to our statement written above: each row of elements should be written inside the curly braces. The rows and the elements in each row should be separated by a commas.

Now observe the statement: you can get there are 3 rows and 5 columns, so the JVM creates 3 \* 5 = 15 blocks of memory. These blocks can be individually referred ta as:

```
marks[0][0]  marks[0][1]  marks[0][2]  marks[0][3]  marks[0][4]
marks[1][0]  marks[1][1]  marks[1][2]  marks[1][3]  marks[1][4]
marks[2][0]  marks[2][1]  marks[2][2]  marks[2][3]  marks[2][4]

```

NOTE:  

If you want to store *n* elements then the array index starts from zero and ends at *n-1*.
Another way of creating a two dimensional array is by declaring the array first and then allotting memory for it by using new operator.

```
int marks[][];           // declare marks array
marks = new int[3][5];   // allocate memory for storing 15 elements

```

By combining the above two we can write:

```
int marks[][] = new int[3][5];

```
It is also possible to declare it the following way. It's not good design, but it works.

```
int[] twoDimIntArray[] = new int[5][10];

```