假设我们可以使用局部变量vs访问实例变量的场景我应该选择什么?
例如: 在foo.java里面
int x = bar.getX();
int y = x * 5;
优点是我们不会反复访问对象变量对性能产生影响。
或 在foo.java里面
int y = bar.getX() * 5;
使用第二种方法的优点是,我们不需要创建和维护另一个变量。
答案 0 :(得分:3)
做任何更具可读性的事情。
通常较短的代码更容易阅读,理解和显示正确,但如果表达式变长并且中间表达式本身有意义,那么引入局部变量以使代码更清晰。
就性能而言,除非您对代码进行概要分析,否则您不会知道会有任何性能受到影响。 Java中的优化发生在编译时,但也在运行时使用现代JIT补充。编译器可以进行内联,常见的子表达式消除以及各种代数转换和强度降低,我怀疑您的示例会以某种方式显示任何性能影响。
除非这样的表达式在循环中执行了十亿次或更多次,否则可读性会获胜。
答案 1 :(得分:2)
Thumb规则尽可能地减少变量的范围。
如果要在所有方法中访问变量,请使用实例成员。否则只需去寻找局部变量。
如果您在方法中使用变量X
,请将其定义为成员。
对性能产生影响,int x = obj.getX();
只是您正在创建一个副本变量,而不是其他任何内容。
一旦您使用Object
而不是primitive
,您就会意识到。然后参考事项。
所以在你的情况下,第一行int x = obj.getX();
有点多余。第二个更具可读性。