之间有什么区别:
String x = getString();
doSomething(x);
VS
doSomething(getString());
资源和性能明智,特别是它在一个循环中完成了数十次,数百次或数千次?
答案 0 :(得分:7)
它有相同的开销。局部变量就是为了让您的生活更轻松。在VM级别,它们不一定存在,当然也不再存在机器代码。
所以你需要担心的是getString()
,无论它是否具有潜在的昂贵性。 x
很可能根本没有效果。
答案 1 :(得分:1)
首先我要说的是,你的首要目标应该是保持代码可读性。您的编译器几乎总是比简单的优化更好。相信它!
响应您的具体示例:为每个示例生成的字节码不同。但是,它似乎没有太大的区别,因为在Integer.MAX_VALUE迭代的循环中,两种方法之间没有统计上显着或甚至一致的差异。
答案 2 :(得分:0)
我相信在编译时两者都是相同的,但在某些情况下,第一个可能会变得更具代码可读性。
答案 3 :(得分:0)
两个陈述都是一样的。唯一不同的是,在第一种方法中,您使用了局部变量X,可以使用第二种语法来避免。
答案 4 :(得分:0)
这在很大程度上取决于用例。你是否会使用那个确切的字符串重复调用doSomething?然后使用局部变量更有效。但是,如果是单个呼叫或使用不同字符串的多个呼叫,则没有区别。