The following is the obvious and usual array declaration and initialization in Java.
int r[], s[]; //<-------
r=new int[10];
s=new int[10];
A very similar case behaves differently, when the position of [] is changed in the declaration statement like as shown below.
int []p, q[]; //<-------
p=new int[10];
q=new int[10][10];
Please look at the declaration. The position of [] has been changed from r[] to []p. In this case, the array q behaves like an array of arrays of type int (which is completely different from the previous case).
The question: Why is q, in this declaration int []p, q[]; treated as a two dimensional array?
Additional information:
The following syntax looks wonky.
int []a[];
This however, complies fine and just behaves like int a[][]; or int [][]a;.
Hence, the following cases are all valid.
int [][]e[][][];
int [][][][][]f[][][][];
public int numbers()[] { return new int[5]; }:D