例如:
public Person newPerson() {
Person p = new Person("Bob", "Smith", 1112223333);
return p;
}
而不是:
public Person newPerson() {
return new Person("Bob", "Smith", 1112223333);
}
一个比另一个更有效吗?
答案 0 :(得分:17)
没有任何差别可以让你在性能方面选择其中一个。
一般来说,我会为后者提供建议,无论何时需要调试,都要临时切换到第一个(两行)变体。
答案 1 :(得分:8)
在返回之前分配给临时变量使您有机会在newPerson()中进行错误检查和更正。返回新调用需要newPerson()方法的调用者捕获并从错误中恢复。
答案 2 :(得分:1)
没有人比其他人更有效率,JIT会在运行时将其内联到效率最高。
答案 3 :(得分:1)
在一个理智的世界中,它们将编译为完全相同的字节码,因此就性能而言它们是相同的。那么唯一的区别就是人类:
创建临时变量使调试变得更加容易:您可以在return语句上放置断点并检查p
的值。在单行版本中,这很难做到。
在一行中执行会消除变量,从而降低复杂性,使代码更容易阅读。
在实践中,我会在一行中编写它,在最坏的情况下,如果我遇到调试问题,我会创建一个临时变量。此外,不是单元测试应该消除调试的需要吗? : - )
答案 4 :(得分:0)
一个并不比另一个效率更高,但直接返回创建的对象可能更清晰,因为您使用的临时变量较少。如果必须使用临时变量,请将其设为final
并正确命名。
答案 5 :(得分:0)
第二个选项更短,更容易阅读。
我怀疑任何体面的Java编译器都会为第一个选项创建效率较低的代码。