声明一个局部变量并设置它比一次又一次地使用getter更有效吗?

Jer*_*ady 0 java android

我今天正在阅读一些代码并看到了这个:

    x.add(getResources().getString(R.string.none));
    x.add(getResources().getString(R.string.today));
    x.add(getResources().getString(R.string.tomorrow));
    ...
Run Code Online (Sandbox Code Playgroud)

所以我想,"那效率很低!" 并开始将其更改为:

    Resources res = getResources();
    x.add(res.getString(R.string.none));
    x.add(res.getString(R.string.today));
    x.add(res.getString(R.string.tomorrow));
    ...
Run Code Online (Sandbox Code Playgroud)

但后来我停下来想知道:代码的第二部分是否真的更有效率还是不重要?编译器是否会以任何方式生成相同的字节代码?

Jon*_*eet 5

编译器不会生成相同的字节代码,但如果getResources()是一个简单的方法,则JIT编译器可以在执行时有效地运行相同的代码.

我个人更喜欢第二种形式,因为它更清洁,更易读,而不是出于性能原因.