seems like you have learned C/C++ language & you are thinking in those terms.
in
java if you were to declare
int [][][] arr = new int[2][][];
it will run properly as it requires atleast one, that is the highest dimension of the array to be created.
the rest you can leave it blank. you can assign as and when you require
arr[0] = new int[3][];
arr[1] = new int [5][4];
the arrays need have all its dimensions the same length!!
arr[0].length is 3
arr[1].length is 5
arr.length is 2