初始化基元数组

2022-09-01 18:55:11

我想知道,

初始化基元数组的这两种方法之间到底有什么区别:

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

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

哪一个是首选?


答案 1

没有,它们产生完全相同的字节码。我认为第二种形式可能在旧版本的Java中不受支持,但那应该是一段时间前的事了。

既然如此,它就变成了一个风格问题,这是一个个人喜好的问题。既然你特别问了,我更喜欢第二个,但同样,这是个人品味的问题。


答案 2

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

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

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

public int[] getNumbers() {
   return new int[]{1, 2, 3};
}