这两行代码之间是否存在显着差异?
int[] array = new int[]{1,2,3}
int[] array = {1,2,3}
如果我不得不猜测,在第二个版本中隐式调用相同的构造函数,使它们相同。
编辑: This question was explored previously here but with default values.我的问题是使用非默认值初始化数组。
答案 0 :(得分:2)
出于好奇,我用以下方法对课程进行了反编译
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
这两个陈述基本上看起来都是相同的解码。