在java中,我可以通过以下方式初始化具有预定义内容的数组:
int[] myArr = new int[]{1,2,3};
或者通过:
int[] myArr = {1,2,3};
基本上,这两种方式之间有什么区别吗?它们在Java中完全相同吗?哪种方式更好,为什么?
答案 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