繁体   English   中英

我们应该直接在Java中将参数作为变量或作为新对象传递给方法吗

[英]Should we pass argument to a method as a variable or as a new object directly in java

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

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

2)

Object[] obj = {"something"} ;

doSomething(obj);

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

只是为了澄清该对象将仅创建一次,我说的是用于容纳新创建对象地址的额外变量。

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

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

第二个调用使您可以在调用方法中重用该对象,但第一个则不能。

它不会在内存中产生任何影响,因为无论如何都会创建传递的对象。

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

最好的选择可能是使用varargs

doSomething("something");

void doSomething(String... args) { }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM