That's because the way in which arrays work in Java.
The Java compiler always, always needs to know how much space to take for your Array when you are creating it (with "new").
In the first case, int arr = new int;
The compiler doesn't have that data, so it will always, always, fail. It doesn't know how much space do you actually need.
But, in the second case, there's a subtle difference,
int arr = new int;
The compiler actually has the data it needs, it needs 5 spaces for the new array (the first dimension). That's all it needs.
The second dimension doesn't matter at this point since it is another set of different arrays. So the compiler will happily continue with no problems.
But, you will actually need to make that initialization when you try to use it, say for example:
arr = new int ; //arr is going to be another array with two ints.
arr = 50; //the first int in array is 50;
arr = 100; //the second int in array is 100;
Does it makes sense?