Sounds simple.
Hmmm , the object array after "Object[] obj = (Object[])a.clone();" would look like : obj[0] = {1,2}
obj[1] = {0,1,2}
obj[2] = {-1,0,2}
now you are typcasting this object array in the loop "int[] ia = (int[])obj[i];"
so for i = 0 we will have int ia[] = {1,2} and when you say ia[0] output is =1.
similarly for i=1 we have int ia[] = {0,1,2} and ia[1] = 1 and you can draw similar conclusion for i=2.
I hope this answers your questions.
