使用`{...}`进行数组实例化

时间:2014-09-07 20:39:16

标签: java arrays

寻找以下验证:

以下两个

之间是否存在任何差异
int [] arr = new int[]{1, 2, 3}; 

int [] arr2 = {1, 2, 3}; 

对我来说 - 没有。实际上无论如何。 {1, 2, 3}实例化以及初始化它。所以 - 在它之前调用new根本没有用(?)

TIA。

3 个答案:

答案 0 :(得分:1)

不,你给出的例子没有区别。但是,使用new int[]可以将声明和初始化分开,如:

int[] arr;
...
arr = new int[] { 1, 2, 3 };

arr = {1, 2, 3};则不允许。

答案 1 :(得分:1)

在所示的两个例子中没有任何区别,它们是等价的。但是需要第一种表示法,例如,如果我们有一个方法m()作为参数接收,比如说int[],那么在线实例化数组的唯一方法就是:

m(new int[]{1, 2, 3});

因为这不起作用:

m({1, 2, 3});

这是为什么?它被语言设计者定义为,可能是为了避免在解析代码时出现歧义。

答案 2 :(得分:0)

在给定的例子中,没有区别。

通常,数组由数组创建表达式创建,例如使用new关键字(§15.9)或数组初始值设定项(§10.6)。

数组创建表达式指定至少一个嵌套级别的元素类型,嵌套数组的级别数和数组的长度。数组的长度可用作最终实例变量长度。

数组初始值设定项创建一个数组,并为其所有组件提供初始值。