new int [] {}或只是{}之间的区别

时间:2017-12-18 03:37:59

标签: java arrays constructor

这两行代码之间是否存在显着差异?

int[] array = new int[]{1,2,3}
int[] array = {1,2,3}

如果我不得不猜测,在第二个版本中隐式调用相同的构造函数,使它们相同。

编辑: This question was explored previously here but with default values.我的问题是使用非默认值初始化数组。

1 个答案:

答案 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

这两个陈述基本上看起来都是相同的解码。