Java省略号是否需要堆分配?

时间:2013-08-12 19:23:36

标签: java android

是否有一个善良的灵魂在那里实际知道Java的省略号实现是否涉及场景背后的任何堆分配。对于我来说,调用方法在堆栈上执行必需操作并完全避免数组/堆分配似乎是合理的,但是当涉及到Java时,我被证明错误的次数超过了我的数量。如果有人确实知道,我会非常感谢答案。

1 个答案:

答案 0 :(得分:2)

是的,它确实在创建一个数组。现在有可能在一些的情况下,JVM可以做一些聪明的事情,注意到数组永远不会“逃脱”,并且它实际上可以在堆栈上创建 - 但这与它无关。 varargs语法,只是语法糖。

通常,您应该将其视为任何其他阵列创建。所以这个:

public void foo(int... args)
// Code
foo(1, 2, 3);

完全等同于:

public void foo(int[] args)
// Code
foo(new int[] { 1, 2, 3 });