Win a copy of Design for the Mind this week in the Design forum!

# Another Array question...

Higgledy Smith
Ranch Hand
Posts: 192
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: 192
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: 192
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
Marshal
Posts: 21000
76
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: 192
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.