int arrayNonRettangolare [][]=new int[4][];

dichiara un array di array di interi, cioè ogni elemento di arrayNonRettangolare è un array di interi.

Nelle istruzioni successive vengono creati i vari elementi di arrayNonRettangolare, che come detto sono array,e quindi sono creati come tali:

arrayNonRettangolare [0]=new int[2];

inquesto modo il primo elemento di arrayNonRettangolare è dichiarato come un array di 2 elementi, e cosi per gli altri indici.