在方法中将全局变量转换为局部变量的Java优势

时间:2011-07-23 17:11:07

标签: java variables global-variables

我正在开发基于股票启动器的Android启动器。我只是感兴趣为什么有很多全局变量转换为方法中的局部变量,例如

final VelocityTracker velocityTracker = mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000);

而不仅仅是

mVelocityTracker.computeCurrentVelocity(1000);

它是一些android的东西还是一般的java规则?在可以直接访问时,分配新的VelocityTracker是没有意义的。

修改 是的,这段代码重复了很多次。

2 个答案:

答案 0 :(得分:4)

如果您多次使用字段,这将非常有用。一些JVM和我认为Android VM不能有效地优化对字段的访问。

然而,它可能被过度使用,如果只访问一次,我看不到这一点。

访问volatile字段也很有用。这可以确保当您多次使用该字段时,您将使用相同的对象。 e.g。

volatile String text;

String text = this.text;
if(text != null)
    doSomething(text);

如果您没有使用局部变量text,则if语句可以为非null,而doSomething()则为null

答案 1 :(得分:1)

你是对的,在你的简短例子中,这个任务没有任何意义。但通常最小化变量范围是一种好习惯。这使您可以专注于处理特定变量的特定代码。