the difference between with new or without when build array
我知道有两种方法可以构建一个数组:
1 2 | int[] a = {1,2,3}; int[] b = new int[]{1,2,3}; |
到现在一切都好。
但是当使用for循环来处理数组的数据时。 出现了一些东西。
至于这种方式:
1 | for(int data:a){} |
一切都好,
但是关于以下方式,出现了惊喜:
1 | for(int data:{1,2,3}){} |
它无法通过编译。 和错误信息是:
此行有多个标记
- 语法错误,插入"}"以完成ArrayInitializer
- 语法错误,插入";;)语句"以完成ForStatement
- 类型不匹配:无法从int []转换为int
- 令牌":"上的语法错误,=预期
我想找出原因,而且我想知道当没有new关键字时数组是在堆栈还是堆内存中? 并且我知道当使用新关键字时它存在堆内存。
在变量初始化中,两种形式具有完全相同的结果。
简短形式(称为数组初始化程序;JLS§10.6)只能用于初始化,而不是作为独立值,这就是