这个问题在这里已有答案:
这两行代码之间是否存在显着差异?
int[] array = new int[]{1,2,3}
int[] array = {1,2,3}
如果我不得不猜测,在第二个版本中隐式调用相同的构造函数,使它们相同。
编辑:This question was explored previously here but with default values.我的问题是使用非默认值初始化数组。
出于好奇,我用以下方法对类进行了反编译
public void arrayTest1(){
int[] array = new int[]{1,2,3};
}
public void arrayTest2(){
int[] array = {1,2,3};
}
这是与他们相关的结果。
public void arrayTest1();
Code:
0: iconst_3
1: newarray int
3: dup
4: iconst_0
5: iconst_1
6: iastore
7: dup
8: iconst_1
9: iconst_2
10: iastore
11: dup
12: iconst_2
13: iconst_3
14: iastore
15: astore_1
16: return
public void arrayTest2();
Code:
0: iconst_3
1: newarray int
3: dup
4: iconst_0
5: iconst_1
6: iastore
7: dup
8: iconst_1
9: iconst_2
10: iastore
11: dup
12: iconst_2
13: iconst_3
14: iastore
15: astore_1
16: return
这两个语句基本上看起来都是相同的解编译。