This week's book giveaway is in the OCPJP forum. We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line! See this thread for details.
Multidimensional arrays are constructed as "arrays of arrays". So, when you have int myArr = new int;, "myArr", is a one dimensional array, but each element is itself an array. So, it seems like myArr is two dimensional.
Because myArr is just an array, it behaves the same as any array - each element must be of the correct type. This means you can assign any int to an element of myArr. Eg, you could do "myArr = new int;". Assignment between array types, as you point out, doesn't do any length checking.
The initialisation code "new int" creates an initial 'matrix' of size 2x2, but there is no restriction that myArr must always reference a 'matrix' of this size.