申明一个局部变量并且设置一次,比多次使用getter更有效?

程序中使用的一段代码是这样的:

    x.add(getResources().getString(R.string.none));
    x.add(getResources().getString(R.string.today));
    x.add(getResources().getString(R.string.tomorrow));
    ...

看着很低效,觉得应该可以更简化一些,然后我把代码变成

Resources res = getResources();
x.add(res.getString(R.string.none));
x.add(res.getString(R.string.today));
x.add(res.getString(R.string.tomorrow));
...

可是第二段代码真的比第一段代码高效吗?这两种方法编译器是否生成相同的字节代码?

直接访问局部变量要比直接访问类的字段要快,自然也是比使用getter快。所以第二种方式要高效点。你去看一看《如何成为android高手》这一篇文章,里面有提到。

编辑器不会产生相同的字节码,但是如果getResources()是一个简单的方法,然后JIT-compiler在执行时间可以有效地运行相同的代码。
就我个人而言,我更喜欢第二种方法,因为它更清楚更可读。