However, assuming you need a 2 dimensional array, that is int array array, the second array will be boxed (elements of the first array will be pointers to another array, but elements of these, secondary, arrays will be unboxed integers).

You could probably use one dimensional array and use a modified getter and setter functions that would transform 2-D indeces into 1-D indeeces. In this way, all the elements would be unboxed.