我正在开发基于股票启动器的Android启动器。我只是感兴趣为什么有很多全局变量转换为方法中的局部变量,例如
final VelocityTracker velocityTracker = mVelocityTracker;
velocityTracker.computeCurrentVelocity(1000);
而不仅仅是
mVelocityTracker.computeCurrentVelocity(1000);
它是一些android的东西还是一般的java规则?在可以直接访问时,分配新的VelocityTracker
是没有意义的。
修改 是的,这段代码重复了很多次。
答案 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)
你是对的,在你的简短例子中,这个任务没有任何意义。但通常最小化变量范围是一种好习惯。这使您可以专注于处理特定变量的特定代码。