2 ssummeraw ssummeraw 于 2013.01.17 14:41 提问

申明一个局部变量并且设置一次,比多次使用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));
...

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

2个回答

usniyo
usniyo   2013.01.17 19:38
已采纳

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

CSDN_Ask
CSDN_Ask   2013.01.28 11:05

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!