6

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

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

或通过:

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

本质上,这两种方式有什么区别吗?它们在 Java 中完全一样吗?哪种方式更好,为什么?

4

5 回答 5

5

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

不,没有区别。3他们都将创建一个具有给定值的长度数组。

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

于 2013-10-29T12:47:35.653 回答
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
于 2013-10-29T12:50:42.550 回答
0

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

于 2013-10-29T12:48:45.423 回答
0
int[] myArr = new int[]{1,2,3};

这意味着您正在初始化三个变量,这将创建数组 3 的长度

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

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

于 2013-10-29T12:55:11.610 回答
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
于 2013-10-29T12:56:47.957 回答