Tino APCS

Two-Dimensional Arrays

  1. Often the data a program uses comes from a two-dimensional situation. For example, maps are two-dimensional (or more), the layout of a printed page is two-dimensional, a computer-generated image, such as on your computer's display, is two-dimensional, and so on.

    For these situations, a Java programmer can use a two-dimensional array. This allows for the creation of table-like data structures with a row and column format. The first subscript is a row index in a table while the second subscript is a column index in a table. Here is example code:

    int[][] table = new int[3][4];
    int row, col;
    
    for (row = 0; row < 3; row++){
         for (col = 0; col < 4; col++){
                table[row][col] = row + col;
         }
    }
    

    The table below shows the value at each position within the array generated by the code above.

    Col 0 Col 1 Col 2 Col 3
    Row 0 0 1 2 3
    Row 1 1 2 3 4
    Row 2 2 3 4 5
  2. Two-dimensional arrays are objects. A variable such as table is a reference to a 2D array object. The declaration shown below defines a table that holds a reference to a 2D array of integers. Without any further initialization, table holds the value null because it hasn't been initialized. It was only declared.

    int[][] table;
    
  3. The code below instantiates a 2D array of integers, each of which is initialized to zero by default.

    int[][]table = new int[3][4];
    
  4. 2D arrays can be hardcoded as shown below:

    int[][]table = { {0,1,2,3},
                     {1,2,3,4},
                     {2,3,4,5} };
    
  5. If no initializer is provided for an array, then when the array is created, it is automatically filled with the appropriate values: zero for numbers, false for boolean, and null for objects.

  6. Just as with one-dimensional arrays, the row and column numbering of a 2-D array begins at subscript zero (0). The 3 rows of the array shown above are numbered from 0 to 2. Likewise, the 4 columns of the table are numbered from 0 to 3.

  7. To access a location in a 2D array, specify the row coordinate first, then the column:

    table[row][col]
    
  8. The length of a 2D array is the number of rows it has. The row index will run from 0 to length -1. The number of rows in table is given by the value table.length.

    Each row of a 2D array has its own length. To get the number of columns in table, use any of the following:

    table[0].length
    table[1].length
    table[2].length.
    

    There is actually no rule that says that all the rows of an array must have the same length, and some advanced applications of arrays use varying-sized rows. But if you use the new operator to create an array in the manner described above, you'll always get an array with equal-sized rows.

  9. The code at the top of this page that hardcoded the loop boundaries. A better approach should work for an array of any dimensions.

    int[][] table = new int[3][4];
    int row, col;
    
    for (row = 0; row < table.length; row++){
         for (col = 0; col < table[row].length; col++){
                table[row][col] = row + col;
         }
    }
    

    In the sample above, the limits of the for loops have been redefined using table.length and table[row].length so that they work with any two-dimensional array of ints with any number of rows and columns .

Last modified: February 05, 2023

Dark Mode

Outline