Starting with the beginning of declaring arrays in the fashion above.
You can create an array by stating:
int [] arr = new int[3]; //(eq 1)
You can go one step further by declaring the values in the array with:
int [] arr = {0,1,2}; //(eq 2)
If you know your values ahead of time, you do not have to create an instance of int[].
Now to your question. There is no difference between the two, as others have stated, except for a more clear picture of what it is you are doing. The equivalent of eq. 2 in a two dimensional array is:
int [][] arr = {{0,1,2},{3,4,5},{6,7,8}}; //(eq 3)
Notice how you do not need to declare "new int[][]" before you start entering in values. "{0,1,2}" is an array itself and so is everything else within the first "{" and last }" in eq 3. In fact, after you declare arr, you can call the array "{0,1,2}" from eq 3 by the following statement:
arr[0]; //(eq 4)
eq 4 is equivalent to eq 2. You can switch out the simple "{" with "new int [] {" or "new int [][] {". If you want to switch out one for the other, that is fine and the only real difference is weather or not it fits your style of coding.
For fun, here is an example of a 3 dimensional array in short hand syntax:
//This is a really long statement and I do not recommend using it this way
int [][][] arr = {{{0,1,2},{3,4,5},{6,7,8}},
{{9,10,11},{12,13,14},{15,16,17}},
{{18,19,20},{21,22,23},{24,25,26}}};