1

考虑以下两个对 java 中相同方法的调用:-

1)doSomething(new Object[]{"something"}) ;

2)

Object[] obj = {"something"} ;

doSomething(obj);

就内存和时间效率而言,哪一个更有效?我会说 1) 在内存和时间效率方面都更好。在第二个选项中的原因要求我们创建另一个变量(额外内存),然后将该值分配给变量(额外时间)。任何意见 ?

只是为了澄清对象只会创建一次,我说的是用于保存新创建对象的地址的额外变量。

4

3 回答 3

4

两者在时间和记忆方面都是一样的。编译器可以优化额外的分配。

不同之处在于,第二个版本让您有机会为变量指定一个有用的名称,这可以使代码更加清晰。

于 2013-01-14T10:08:23.567 回答
2

第二个调用允许您在调用方法中重用对象,但第一个不允许。

它与内存无关,因为无论如何都会创建传递的对象。

于 2013-01-14T10:08:36.987 回答
1

您应该始终首先考虑更简单和更清晰的内容。仅当您知道存在问题时才应考虑性能,因为您在分析器或微基准测试中对其进行了测量。

最好的选择可能是使用可变参数

doSomething("something");

void doSomething(String... args) { }

注意:这不仅是最简单的,而且可能是最快的,因为 JIT 可以消除String[]创建的。

于 2013-01-14T10:11:03.427 回答