数组初始化差异java

Ari*_*iel 10 java

以下两种数组初始化方法有什么区别:

  1. Object[] oArr = new Object[] {new Object(), new Object()};
  2. Object[] oArr = {new Object(), new Object()};

它与堆/堆栈分配有关吗?

谢谢!

Jon*_*eet 20

完全没有 - 他们只是表达同一事物的不同方式.

但是,第二种形式仅在变量声明中可用.例如,你不能写:

foo.someMethod({x, y});
Run Code Online (Sandbox Code Playgroud)

但你可以写:

foo.someMethod(new SomeType[] { x, y });
Run Code Online (Sandbox Code Playgroud)

Java语言规范的相关部分是第10.6- 数组初始化器:

一个数组初始化可被指定在一声明,或作为阵列创建表达式(§15.10)的一部分,形成一个阵列,并提供一些初始值: