Melalui kajian pada bagian sebelumnya kita mengetahui bahwa tidak ada konsep array multidimensi di Java, yang ada hanyalah array satu dimensi. Kita dapat memahami array multidimensi sebagai array dari array, sehingga akan dihasilkan array yang tidak beraturan .
Misalnya, larik dua dimensi beraturan 4×3 memiliki 12 elemen, tetapi larik dua dimensi tak beraturan 4×3 belum tentu memiliki elemen sebanyak itu. Misalnya, inisialisasi array tidak beraturan secara statis :
intArray[][]={{1,2},{3},{4,5,6},{7,8}};
Array berdimensi dua ke atas kita sebut array berdimensi tinggi. Maka array berdimensi tinggi di atas mempunyai 4 elemen, tetapi jumlah elemen array berdimensi rendah berbeda memiliki 1 elemen, array ke-3 memiliki 3 elemen, dan array ke-4 memiliki 2 elemen.
Menginisialisasi array tidak beraturan secara dinamis sedikit lebih merepotkan. Ia tidak bisa langsung menggunakan pernyataan int[4][3] yang baru. Kita perlu menginisialisasi array berdimensi tinggi terlebih dahulu, lalu menginisialisasi array berdimensi rendah secara terpisah, misalnya:
intArray[][]=newint[4][];//Inisialisasi array berdimensi tinggi terlebih dahulu ke 4Array[0]=newint[2];//Inisialisasi array berdimensi rendah Array[1]=newint[1] ;Array[ satu per satu 2]=newint[3];Array[3]=newint[2];
Kemudian setelah kode di atas menginisialisasi array, kita dapat mengetahui bahwa elemennya bukan 12, melainkan hanya 8 elemen, dengan subskrip [0][2], [1][1], [1][2] dan [ 3][2] tidak ada. Saat kami mencoba mengaksesnya, pengecualian subskrip di luar batas akan muncul.
Catatan : Pengecualian subskrip di luar batas (ArrayIndexOutOfBoundsException) muncul saat mencoba mengakses subskrip yang tidak ada. Misalnya, dengan asumsi array satu dimensi Array memiliki 12 elemen, maka ekspresi Array[12] akan menyebabkan pengecualian subskrip di luar batas. Hal ini karena subskrip array dimulai dari 0, dan subskrip elemen terakhir harusnya adalah panjang array dikurangi panjang array 1, sehingga elemen yang diakses oleh Array[12] tidak ada.