programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering OS Languages Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# Another Array question...

Higgledy Smith
Ranch Hand
Posts: 193
Given:
int [][] a = {{1,2,}, {3,4}};
int[] b = (int[]) a[1];

This (int[]) in the above code is casting a 2-D array to a 1-D array?

Higgledy Smith
Ranch Hand
Posts: 193
int [][] a = {{1,2,}, {3,4}};
int[] b = (int[]) a[1];
Object o1 = a;

I don't understand why I can set my instance ref o1 to the instance ref of array a? I thought that the object o1 would have had to been a 2-D?

Is it possible to display the contents of o1? As it is written now?

Keith Lynn
Ranch Hand
Posts: 2409
In the original question, a[1] is an array of ints, so the cast is legal.

Recall that arrays are objects, and you can refer to any array as an Object.

Kj Reddy
Ranch Hand
Posts: 1704
In Java there is no concept of 2D arrays. When you say int[][] a, it creates array of arrays.

Higgledy Smith
Ranch Hand
Posts: 193
OK. But what effect is (int[]) providing in the code?

Keith Lynn
Ranch Hand
Posts: 2409
It's unnecessary since a[1] is an int[]

Henry Wong
author
Sheriff
Posts: 23283
125
Originally posted by Higgledy Smith:
OK. But what effect is (int[]) providing in the code?

In the example, a[1] is already an int array, so the cast is not needed.

Henry

Higgledy Smith
Ranch Hand
Posts: 193
OK. I guess the example is not a good one. I was more trying to get someone with experience to tell me it is really casting an array. This is NOT explained in the SCJP 5.0 book but shows up in the self test on page 267.