在构建数组时使用new或without之间的区别

时间:2016-12-21 13:34:33

标签: java arrays

我知道存在两种构建数组的方法:

int[] a = {1,2,3};
int[] b = new int[]{1,2,3};

现在一切正常。

使用 for loop 处理 array 的数据时

。出现了一些东西。

就这样:

for(int data:a){}

一切都很好,
但是关于以下方式,出现了惊喜:

for(int data:{1,2,3}){}

它无法通过编译。并且错误信息是:

此行的多个标记
     - 语法错误,插入“}”以完成ArrayInitializer
     - 语法错误,插入“;;”语句“完成ForStatement
     - 类型不匹配:无法从int []转换为int
     - 令牌“:”上的语法错误,=预期

我想找出原因,而且我想知道数组是否在堆栈内存中,而不是关键字?使用 new 关键字时,我知道它存在堆内存

1 个答案:

答案 0 :(得分:6)

在变量初始化中,两种形式具有完全相同的结果。

简短形式(称为数组初始值设定项; JLS§10.6)只能用于初始化,而不是作为一个独立的值,这就是为什么你的for例子不起作用。