需要解释此Java语法

var*_*tis 2 java arrays syntax

有人可以解释下面的内容吗?

private HashSet nodes[]; 
nodes = new HashSet[21];
Run Code Online (Sandbox Code Playgroud)

我有点困惑......在区别之间

private HashSet nodes = new HashSet;
Run Code Online (Sandbox Code Playgroud)

以及上面,特别是方括号的语法.这是一个HashSets数组吗?因为通常我常常看到

int[] myarray = new int[21];
Run Code Online (Sandbox Code Playgroud)

或类似的东西.

Jon*_*eet 5

它们只是替代品 - 遗憾的是它们都是有效的.

哎呀,即使这样也是有效的:

int[] bad [] = null;
Run Code Online (Sandbox Code Playgroud)

这相当于

int[][] bad = null;
Run Code Online (Sandbox Code Playgroud)

不要这样做,显然:)

JLS第10.2节:

[]可以作为声明开头的类型的一部分出现,也可以作为特定变量的声明者的一部分出现,或者两者兼而有之.

我们不建议在数组变量声明中使用"混合表示法",其中括号出现在类型和声明符中.

基本上,使用将所有类型信息保存在一个地方的表单 - 您习惯的表单.这是压倒性的惯用形式.