From JLS http://docs.oracle.com/javase/specs/jls/se5.0/html/arrays.html#10.2
Here are examples of array variable declarations that do not create arrays:
int[ ] ai; // array of int short[ ][ ] as; // array of array of short Object[ ] ao, // array of Object otherAo; // array of Object Collection<?>[ ] ca; // array of Collection of unknown type short s, // scalar short aas[ ][ ]; // array of array of short
Here are some examples of array variable declarations that create array objects:
Exception ae[ ] = new Exception[3]; Object aao[ ][ ] = new Exception[2][3]; int[ ] factorial = { 1, 1, 2, 6, 24, 120, 720, 5040 }; char ac[ ] = { 'n', 'o', 't', ' ', 'a', ' ', 'S', 't', 'r', 'i', 'n', 'g' }; String[ ] aas = { "array", "of", "String", };
[] It may appear as part of the type at the beginning of the declaration, or as part of the declaration for a specific variable, or both , as in this example:
byte[ ] rowvector, colvector, matrix[ ];
This declaration is equivalent to:
byte rowvector[ ], colvector[ ], matrix[ ][ ];