使用局部变量vs访问实例变量

时间:2013-12-21 06:39:02

标签: java variables

假设我们可以使用局部变量vs访问实例变量的场景我应该选择什么?

例如: 在foo.java里面

int x = bar.getX();
int y = x * 5;

优点是我们不会反复访问对象变量对性能产生影响。

或 在foo.java里面

int y = bar.getX() * 5;

使用第二种方法的优点是,我们不需要创建和维护另一个变量。

2 个答案:

答案 0 :(得分:3)

做任何更具可读性的事情。

通常较短的代码更容易阅读,理解和显示正确,但如果表达式变长并且中间表达式本身有意义,那么引入局部变量以使代码更清晰。

就性能而言,除非您对代码进行概要分析,否则您不会知道会有任何性能受到影响。 Java中的优化发生在编译时,但也在运行时使用现代JIT补充。编译器可以进行内联,常见的子表达式消除以及各种代数转换和强度降低,我怀疑您的示例会以某种方式显示任何性能影响。

除非这样的表达式在循环中执行了十亿次或更多次,否则可读性会获胜。

答案 1 :(得分:2)

Thumb规则尽可能地减少变量的范围。

如果要在所有方法中访问变量,请使用实例成员。否则只需去寻找局部变量。

如果您在方法中使用变量X,请将其定义为成员。

对性能产生影响,int x = obj.getX();只是您正在创建一个副本变量,而不是其他任何内容。

一旦您使用Object而不是primitive,您就会意识到。然后参考事项。

所以在你的情况下,第一行int x = obj.getX();有点多余。第二个更具可读性。