Recent Articles
- "StringBuffer" And "StringBuilder" Classes In JAVA, Started by techgeek.in in Java
- All about "String" class In Java, Started by techgeek.in in Java
- Wrapper Class In Java, Started by techgeek.in in Java
- Concept Of Window and Advanced Components In Java, Started by techgeek.in in Java
- Layout Managers In Java, Started by techgeek.in in Java
Similar Articles
- JSP and Java Servlets, Started by pradeep in JSP
- Using Regular Expressions in Java, Started by pradeep in Java
- Arrays in Java, Started by pradeep in Java
- A Simple Java Applet, Started by pradeep in Java
Java, as with most languages, supports multi-dimensional arrays - 1-dimensional, 2-dimensional, 3-dimensional, ... This discusses 2-dimensional arrays, but the same principles apply to higher dimensions.
2-dimensional arrays
2-dimensional arrays are usually represented in a row-column approach on paper, and the terms "rows" and "columns" are used in computing.
Arrays of arrays
There are two ways to implement 2-dimensional arrays. Many languages reserve a block of memory large enough to hold all elements of the full, rectangular, array (number of rows times number of columns times the element size). Java doesn't do this. Instead Java builds multi-dimensional arrays from many one-dimensional arrays, the so-called "arrays of arrays" approach. [C++ supports both styles.]
There are a couple of interesting consequences of this: Rows may be different sizes. Also, each row is an object (an array) that can be used independently.
Declaration
Declare a 2-dimensional array as follows:
Code: Java
int[][] a2; // Declares, but doesn't allocate, 2-dim array.
Allocation
As with all arrays, the new keyword must be used to allocate memory for an array. For example,
Code: Java
int[][] a2 = new int[10][5];
This allocates an int array with 10 rows and 5 columns. As with all objects, the values are initialized to zero (unlike local variables which are uninitialized).
This actually allocates 6 objects: a one-dimensional array of 5 elements for each of the rows, and a one-dimensional array of ten elements, with each element pointing to the appropriate row array.
Processing 2-dimensional arrays
Often 2-dimensional arrays are processed with nested for loops. Notice in the following example how the rows are handled as separate objects. For example,
Code: Java
Uneven rows
One consequence of arrays of arrays is that each row can be a different size ("ragged" arrays). For example, we could create a lower triangular array, allocating each row "by hand" as follows.
Code: Java
int[][] tri;
tri = new int[10][]; // allocate array of rows
for (int r=0; r<tri.length; r++) {
tri[r] = new int[r+1];
}
// print the triangular array (same as above really)
for (int r=0; r<tri.length; r++) {
for (int c=0; c<tri[r].length; c++) {
System.out.print(" " + tri[r][c]);
}
System.out.println("");
}
More Interesting Java Articles
Common problems and their solutions for Java newbies on Microsoft Windows
Introduction to threads in Java
Working with Strings in Java
Using Java's Net::URL Class To Access URLs
'Main' Thread in Java











Yet to provide details about himself



Linear Mode

