# Introduction

Data in a table or a matrix can be represented using a two dimensional array.

The preceding ___ introduces how to use one-dimensional arrays to store linear collections of elements. You can use a two-dimensional array to store a matrix or a table. For example, the following table that lists the distances between cities can be stored using a two-dimensional array named `distances`.

The two dimensional array equivalent:

# Two Dimensional Array Basics

An element in a two dimensional array is accessed through a row and a column index.

How do you declare a variable for two dimensional arrays? How do you make a two dimensional array? How do you access elements in a two dimensional array? This section addresses these issues.

## Declaring Variables of and Making Two Dimensional Arrays

The syntax for declaring a two-dimensional array is:

or

As an example, here is how you would declare a two-dimensional array variable `matrix` of `int` values:

or

You can make a two dimensional array of 5-by-5 `int` values and assign it to `matrix` using this syntax:

Two subscripts are used in a two dimensional array, one for the rows and another for the columns. As in a one dimensional array, the index for each subscript is of the `int` type and starts from `0`, as show below in table (a).

To assign the value 7 to a specific element at row `2` and column `1`, as shown in table (b), you can use the following syntax:

To make the a point clear: the 1st bracket [] is references the rows. The 2nd [] is references the columns.

*Note that a common mistake is to use `matrix[2, 1]` to access the element at row `2` and column `1`. In Java, each subscript must be enclosed in a pair of square brackets.

You can also use an array initializer to declare, make, and initialize a two dimensional array. For example, the following code:

makes an array with specified initial values, as shown in table (c). This is code is equivalent to:

## Obtaining the Lengths of Two-Dimensional Arrays

A two-dimensional array is actually an array in which each element is a one-dimensional array. The length of an array `x` is the number of elements in the array, which can be obtained using `x.length`. `x[0]`, `x[1]`,…, and `x[x.length-1]` are arrays. Their lengths can be obtained using `x[0].length`, `x[1].length`,…, and `x[x.length-1].length`.

In other words, Number of Rows`x.length` and Number of Columns = `x[x.length-1].length`.

For example, suppose `x = new int[3][4]`, `x[0]`, `x[1]`, and `x[2]` are one dimensional arrays and each contains four elements. `x.length` is `3`, and `x[0].length`, `x[1].length`, and `x[2].length` are `4`. Here’s a diagram showing the lengths of a two dimensional array:

## Ragged Arrays

Each row in a two dimensional array is itself an array. Thus, the rows can have different lengths. An array of this kind is known as a ragged array. Here is an example of making a ragged array:

As you can see, `triangleArray[0].length` is 5, `traingleArray[1].length` is 4, `triangleArray[2]` is 3, `triangleArray[3]` is 2, and `triangleArray[4]` is 1. If you don’t know the values in a ragged array in advance, but do know the sizes- say, the same as before- you can make a ragged array using the following syntax:

You can now assign values to the array. For example,

*Note that the syntax `new int[5][]` for making an array requires the first index to be specified. So `new int[][]` would be wrong.

◄◄◄BACK | NEXT►►►