在返回之前创建对象或直接返回它

时间:2014-05-03 20:30:53

标签: language-agnostic

我通常以这种方式构建我的功能

public MyObject getMyObject(){
   MyObject myObject = new MyObject()
   return myObject;
}

并且想知道如果以这种方式这样做在性能或其他方面“更好”......你是如何做到的?

public MyObject getMyObject(){
   return new MyObject()
}

示例是Java,但它可以是任何其他语言

谢谢

3 个答案:

答案 0 :(得分:2)

生成的字节码存在差异。您可以使用javap -c MyObject.class查看字节码。

第一个这样做:

0: new
3: dup
4: invokespecial
7: astore_1
8: aload_1
9: areturn

第二个做到了这一点:

0: new
3: dup
4: invokespecial
7: areturn

然而,主要推理应该是可读性而不是微观优化。在这种情况下,我认为可读性和微观优化恰好相吻合。

答案 1 :(得分:1)

第一种方法是创建对返回后不再使用的对象的引用。

第二种方法不会创建该引用,因此您可以节省一点内存(非常小)。

最佳标准是代码的可读性。对我来说,第二种解决方案更加明智和清晰,但这取决于你。

答案 2 :(得分:0)

声明myObject变量没有任何意义,因为它永远不会被使用。为了保持代码的可读性和简短性,我更喜欢第二种选择。