在 java 中,我可以通过以下方式初始化具有预定义内容的数组:
int[] myArr = new int[]{1,2,3};
或通过:
int[] myArr = {1,2,3};
本质上,这两种方式有什么区别吗?它们在 Java 中完全一样吗?哪种方式更好,为什么?
这两种方式有什么区别吗?它们在 Java 中完全一样吗?
不,没有区别。3
他们都将创建一个具有给定值的长度数组。
第二个只是创建声明它的数组的简写。但是,您不能在声明以外的任何其他位置使用第二种创建数组的方法,其中数组的类型是从声明的数组引用类型推断的。
在你的情况下没有区别。
当您不将变量分配给变量并进行内联创建时,将会有所不同。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
不,第一个和第二个是一样的。第二个只是语法糖。你的最终结果是一样的。
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