Java 构建阵列时使用新阵列与不使用阵列的区别

Java 构建阵列时使用新阵列与不使用阵列的区别,java,arrays,Java,Arrays,我知道构建阵列有两种方法: int[] a = {1,2,3}; int[] b = new int[]{1,2,3}; 现在一切都好了 但是使用for循环处理数组数据时。有东西出现了 关于这一点: for(int data:a){} 一切正常, 但关于以下方式,令人惊讶的是: for(int data:{1,2,3}){} 它不能通过编译。错误信息为: 该行有多个标记 -语法错误,插入“}”以完成ArrayInitializer -语法错误,请插入“;)语句”以完成对语句的修改 -类型

我知道构建阵列有两种方法:

int[] a = {1,2,3};
int[] b = new int[]{1,2,3};
现在一切都好了

但是使用for循环处理数组数据时。有东西出现了

关于这一点:

for(int data:a){}
一切正常,
但关于以下方式,令人惊讶的是:

for(int data:{1,2,3}){}
它不能通过编译。错误信息为:


该行有多个标记
-语法错误,插入“}”以完成ArrayInitializer
-语法错误,请插入“;)语句”以完成对语句的修改
-类型不匹配:无法从int[]转换为int
-令牌上的语法错误“:”,=应为


我想找出原因,并且进一步想知道当没有new关键字时,数组是在堆栈内存还是在堆内存中?我知道,当使用新关键字时,它存在堆内存

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


缩写形式(称为数组初始值设定项;)只能在初始化中使用,但不能作为独立值使用,这就是为什么
for
示例不起作用的原因。

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


简短形式(称为数组初始值设定项;)只能在初始化中使用,但不能作为独立值使用,这就是为什么
for
示例不起作用的原因。

这是因为第二种语法无效。数组文字语法仅在赋值时有效。这是因为第二种语法无效。数组文字语法仅在赋值时有效。