2

有什么区别:

String x = getString();
doSomething(x);

对比

doSomething(getString());

资源和性能方面,特别是它是在一个循环中完成数十、数百或数千次吗?

4

5 回答 5

7

它具有相同的开销。局部变量只是为了让您的生活更轻松。在 VM 级别,它们不一定存在,并且在运行机器代码时肯定不再存在。

因此,您需要担心的是getString(),它是否可能很昂贵。x很可能根本没有效果。

于 2012-05-30T05:37:50.677 回答
1

首先让我说你的首要目标应该几乎总是保持代码的可读性。您的编译器几乎总是比您更擅长微不足道的优化。相信它!

针对您的具体示例:为每个示例生成的字节码不同。不过,这似乎没有太大区别,因为在 Integer.MAX_VALUE 迭代的循环中,两种方法之间没有统计学意义甚至一致的差异。

于 2012-05-30T05:47:32.840 回答
0

我相信两者在编译时都是相同的,但在某些情况下,第一个可能会变得更具代码可读性。

于 2012-05-30T05:39:26.113 回答
0

两种说法都是一样的。唯一的区别是,在第一种方法中,您使用了局部变量 X,可以使用第二种语法来避免。

于 2012-05-30T05:39:37.773 回答
0

这在很大程度上取决于用例。你要使用那个确切的字符串重复调用 doSomething 吗?然后使用局部变量更有效。但是,如果是单个调用或具有不同字符串的多个调用,则没有区别。

于 2012-05-30T05:45:23.703 回答