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

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

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

或者通过:

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

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

在你的情况下,没有区别。

如果不将array赋值给变量并进行内联创建,则会有所不同

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

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

你的情况:

  someX(myArr); // using some declared array .Ie 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 

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

没有没有区别。 它们都将使用给定值创建长度为3的数组。

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

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

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

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

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

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

两种方式都会产生完全相同的结果。 两者都是具有预定义值的长度为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