初始化基元数组

Muz*_*Muz 24 java arrays primitive

我想知道,

这两种初始化基元数组的方法之间的区别是什么?

int[] arr1 = new int[]{3,2,5,4,1};

int[] arr2 = {3,2,5,4,1};
Run Code Online (Sandbox Code Playgroud)

哪一个更受欢迎?

T.J*_*der 15

没有,它们产生完全相同的字节码.我认为可能是旧版本的Java不支持第二种形式,但那可能还有一段时间.

在这种情况下,它成为一种风格问题,这是个人喜好的问题.既然你特别问过,更喜欢第二种,但同样,这是个人品味的问题.


whi*_*one 7

这两个陈述没有区别.就个人而言,第二个是首选.因为您拥有大括号中指定的所有元素.编译器将帮助您计算数组的大小.

因此无需int[]在赋值运算符后添加.


Pau*_*ora 7

正如其他人所提到的,它们是等价的,第二种选择则不那么冗长.不幸的是,编译器并不总是能够理解第二个选项:

public int[] getNumbers() {
   return {1, 2, 3}; //illegal start of expression
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您必须使用完整语法:

public int[] getNumbers() {
   return new int[]{1, 2, 3};
}
Run Code Online (Sandbox Code Playgroud)