这两种初始化简单数组的方法之间的区别

时间:2013-10-29 12:46:34

标签: java arrays

在java中,我可以通过以下方式初始化具有预定义内容的数组:

int[] myArr = new int[]{1,2,3};

或者通过:

int[] myArr = {1,2,3};

基本上,这两种方式之间有什么区别吗?它们在Java中完全相同吗?哪种方式更好,为什么?

5 个答案:

答案 0 :(得分:5)

  

这两种方式有什么区别吗?它们在Java中完全相同吗?

没有区别。它们都将创建一个长度为3且具有给定值的数组。

第二个只是创建一个声明它的数组的简写。但是,您不能在声明之外的任何其他位置使用第二种创建数组的方法,其中数组的类型是从声明的数组引用类型推断出来的。

答案 1 :(得分:5)

在你的情况下没有区别。

如果您未将array分配给变量并进行内联创建,则会出现差异

例如,考虑到有一个方法,它以数组作为参数。

  private  void someX(int[] param){
              // do something
          }

你的案子:

  someX(myArr);     // using some declared array .I.e your case

现在看到在其他情况下调用它时的区别。

      someX(new int[] {1,2,3}); //  yes, compiler satisfied.
      someX({1,2,3});     //Error. Sorry boss, I don't know the type of array

答案 2 :(得分:0)

不,第一个和第二个是相同的。第二个是语法糖。你的最终结果是一样的。

答案 3 :(得分:0)

int[] myArr = new int[]{1,2,3};

这意味着你要初始化三个变量,它将创建数组3的长度

int[] myArr = {1,2,3};

这意味着您正在初始化三个变量,默认情况下会创建数组3的长度

答案 4 :(得分:0)

两种方式都会产生完全相同的结果。两者都是具有预定义值的长度 3 的数组。第二个是更短的。如果您认为编写该代码所需的时间较少,则声明数组的第二种方法会更好。

如果您需要使用该数组直接将其传递给方法,您应该使用第一个:

//Correct
someMethod(new int[]{1,2,3});

//Incorrect
someMethod({1,2,3});

但是如果你的目标只是在变量中声明和初始化数组,那么两种方式都是正确的:

int[] myArr = new int[]{1,2,3}; //Correct
int[] myArr = {1,2,3}; //Also Correct
相关问题