We can declare 2-dimensional arrays as follows.

int[][] m1 = new int[3][3];

Here *m1* has 3 rows, each of length 3.** **You can also declare a multi-dimensional array with rows of a length different than the number of columns. Below *m2* has 2 rows, each of length 3.

int[][] m2 = new int[2][3];

2D arrays are just arrays of arrays. So we can do the following.

m2[0] = new int[3]; m2[1] = new int[3];

You can also initialize a multi-dimensional array when it is declared. Here is a 2D array whose rows are of different lengths.

int[][] matrix = { {1, 0, 0}, {0, 1}, {1} };

**Iterating Over a 2D Array**

We can iterate over the elements of a 2D array using nested for-loops. If we don’t need to modify the values stored in the matrix, since 2D arrays are just arrays of arrays we can use for-each loops as shown below.

for (int[] arr: matrix) { for (int elm : arr) { System.out.printf("%d ", elm); } }

If we need to modify the values stored in the matrix we can use a regular for-loop and iterate over the indices of the matrix.

for(int i = 0; i < matrix.length; i++) { for (int j = 0; j < matrix[i].length; j++) { if (i == j) { matrix[i][j] = 1; } } }

© 2017, Eric. All rights reserved.