aspose file tools*
The moose likes Beginning Java and the fly likes MultiDimensional Arrays Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "MultiDimensional Arrays " Watch "MultiDimensional Arrays " New topic
Author

MultiDimensional Arrays

Lucky J Verma
Ranch Hand

Joined: Apr 11, 2007
Posts: 278
I read in some Java material,
MultiDimensional arrays in Java are implemented as array of arrays ie each row is a separate array.

When we define as array say , 2 x 3 array
int arr[][]={{1,2,3},
{3,4,5}};

i read ,multiple objects are created ,its not one object.
so according to my understanding , 2+1=3 objects shud be created,2for each row, 1 for storing index to 2 rows.

But ,in this website http://www.go4expert.com/forums/showthread.php?t=1162

some other way to count objects is given.
i want to know what is true.
thnx
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

Note: This post is in response to another response that has since been deleted (so it might seem a little out of context).

There are 3 array objects...

(2*3 = 6 gives the total number of elements -- which, in this case, are primitive ints.)
[ April 12, 2007: Message edited by: marc weber ]

"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer
sscce.org
marc weber
Sheriff

Joined: Aug 31, 2004
Posts: 11343

Originally posted by Lucky J Verma:
...But ,in this website http://www.go4expert.com/forums/showthread.php?t=1162

some other way to count objects is given...

That webpage has an error. The explanation seems correct, but the total is wrong. Where it says...
int[][] a2 = new int[10][5]; ...

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.

...it should say something like...
This actually allocates 11 objects: a one-dimensional array of 5 elements (the ints) for each of the ten rows (so that's ten one-dimensional arrays, each containing 5 ints); and a one-dimensional array of ten elements, with each element pointing to the appropriate row array.

This can be demonstrated with the following code. It creates an int[10][5], then iterates through to print each element. The ints print as default zeros. The array objects print as [I@xxxxxx, where "[I" indicates an int array, and "xxxxxx" represents the memory address. You will see from the output that there are 11 array objects.
 
wood burning stoves
 
subject: MultiDimensional Arrays