Java方法参数:缓存结果与直接调用

Java方法参数:缓存结果与直接调用,java,methods,Java,Methods,我很难准确地描述我在主题中的意思,所以让我们坚持这个例子 给出了一组假设的方法 Object firstObject(); Object secondObject(); void myMethod(Object o1, Object o2); 除了样式之外,下列代码之间是否有任何区别? // Code 1. myMethod(firstObject(), secondObject()); 我这样问主要是因为我遇到了一些非常长的代码行,因为代码1。类型的风格,我想知道这样写是否真的有什么好处。

我很难准确地描述我在主题中的意思,所以让我们坚持这个例子

给出了一组假设的方法

Object firstObject();
Object secondObject();
void myMethod(Object o1, Object o2);
除了样式之外,下列代码之间是否有任何区别?

// Code 1.
myMethod(firstObject(), secondObject());

我这样问主要是因为我遇到了一些非常长的代码行,因为
代码1。
类型的风格,我想知道这样写是否真的有什么好处。

如果你问重构一个变量的方法调用结果是否有任何开销,那么答案是否定的。 选项1的一个重要优点是更好的可读性和轻松使用调试器的能力

下面是一个同样问题的更深入的例子:

重要部分是:

为了回答您的问题,这在对象分配方面没有任何区别,因此GC影响也没有区别


我认为像code1这样做的唯一好处是,您不需要将
firstObject()
secondObject()
分配给任何对象。因此,这取决于您是否需要调用
myMethod
// Code 2.
Object o1 = firstObject();
Object o2 = secondObject();
myMethod(o1,o2);