以下两种数组初始化方式有什么区别:
Object[] oArr = new Object[] {new Object(), new Object()};
Object[] oArr = {new Object(), new Object()};
它们与堆栈分配有关吗?
谢谢!
以下两种数组初始化方式有什么区别:
Object[] oArr = new Object[] {new Object(), new Object()};
Object[] oArr = {new Object(), new Object()};
它们与堆栈分配有关吗?
谢谢!
完全没有区别 - 它们只是表达同一件事情的不同方式。
然而,第二种形式仅适用于变量声明。例如,您不能编写:
foo.someMethod({x, y});
但你可以这样写:
foo.someMethod(new SomeType[] { x, y });
Java语言规范中相关的部分是第10.6节 - 数组初始化器:
可以在声明中指定一个数组初始化器,也可以作为数组创建表达式(§15.10)的一部分来创建一个数组并提供一些初始值:
return new SomeType[] {x, y};
放在一个方法中。这种写法是有效的,但return {x, y};
是无效的。 - Priyanshul Govilnew SomeType[] {..}
和{..}
之间的区别(不仅限于赋值时),我在错误的问题上发表了评论。对此我感到抱歉。 - Priyanshul GovilSomeType object = SomeFunction()
仍然是从返回 SomeType
的函数初始化 object
。 - Priyanshul GovilObject [] array=new Object[size];
还有一个小而引人注目的区别!
你可以做到
int[] arr;
arr= {1,2,3}; // Illegal
但你完全可以做到
int[] arr;
arr = new [] {1,2,3} //Legal
如果您稍后要初始化,则不能执行此操作。
int arr;
arr = new [] {1,2,3} //Illegal