有人可以解释以下内容吗?
private HashSet nodes[];
nodes = new HashSet[21];
我有点困惑......之间的区别
private HashSet nodes = new HashSet;
和以上,特别是在方括号语法方面。这是一个 HashSet 数组吗?因为通常我习惯于看到
int[] myarray = new int[21];
或类似的东西。
它们只是替代品 - 不幸的是,两者都是有效的。
哎呀,即使这也是有效的:
int[] bad [] = null;
这相当于
int[][] bad = null;
显然不要这样做:)
[] 可以作为类型的一部分出现在声明的开头,或者作为特定变量的声明符的一部分,或者两者兼而有之。
和
我们不建议在数组变量声明中使用“混合表示法”,其中括号出现在类型和声明符中。
基本上,使用将所有类型信息保存在一个地方的表单 - 您习惯的表单。这是绝大多数惯用的形式。
private HashSet nodes = new HashSet;
不是有效的 Java。与 JavaScript 不同,new
Java 中的运算符始终需要带括号的参数列表。
private HashSet nodes = new HashSet(21);
不同于
private HashSet[] nodes = new HashSet[21];
因为前者构造了一个HashSet
集合,该集合最初有足够的空间容纳 21 个集合项,而后者是一个21
空值数组,可以填充对集合的引用。
private HashSet nodes[];
声明一个成员变量,它可以引用任何元素类型为 的数组HashSet
。
nodes = new HashSet[21];
创建一个包含 21 个引用空间的数组HashSet
并将其分配给该成员变量。
请记住,在 Java 中,与 C 不同,HashSet[21]
它不是一种类型,因此您不能只通过以下方式为 Java 中的数组分配空间
int[21] myints;
在某些时候,您必须通过创建一个数组
new <type>[size]
,new <type> { element0, element1, element2, ... }
,java.lang.reflect.Array.newInstance
.是的,它是一个数组HashSets
。
HashSet nodes[];
是相同的
HashSet[] nodes;
仅当您使用逗号一次声明一堆变量时,放置括号的位置的差异才变得重要:
HashSet[] alpha, bravo, charlie; // Three arrays of hashsets
HashSet delta[], echo, foxtrot; // One array (delta) and two hashsets (echo and foxtrot)
在 Java 中,声明
private HashSet nodes[];
相当于声明
private HashSet[] nodes;
它可以读作“一个 HashSet 数组”或“一个 HashSet 数组”。