在Java中不使用'new'关键字声明数组


问题内容

以下两个声明之间有什么区别?

int arr[] = new int [5];

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

arr1在堆栈上还是在堆上声明?


问题答案:

一个明显的区别是,一个全为零,另一个包含[1..5]。

但这是唯一的区别。两者都是5元素整数数组,都以相同的方式分配。用大括号声明不只是语法上的方便new

请注意,只有在声明数组时才能使用此形式:

int[] blah = {}

但不是

int[] blah;
blah = {};

要么

return {};

对象(数组是对象)在堆上分配。