0

インスタンス変数にアクセスする方がよいか、その値をローカルに保存する方がよいかを知りたいです。例えば:

方法1:

while (ctr < arr.length ) {
   sysout(arr[ctr++]);
}

方法 2:

int length = arr.length
while (ctr < length) {
   sysout(arr[ctr++];
} 

追加の変数宣言を必要としないため、Method1 の方がきれいに見えます。この場合、方法 2 を使用する利点はありますか?

質問を一般的なものにするために、この場合のベストプラクティスは何ですか?

ありがとう、

4

2 に答える 2

5

答え: 関係ありません。

コンパイラがそれをまったく同じバイトコードにコンパイルするか (この状況では可能性が高い)、JIT が実行時にそれを開始して、これらの両方のソリューションを同等にします。

Java を実行するときの主な目的は、明らかに正しいコードを実行することです。コンパイラと JIT にパフォーマンスを処理させます。

于 2013-06-08T20:46:43.913 に答える
1

arr.length2 番目のケースでは、実行時にループ内で毎回a を実行する必要がないため、2 番目のアプローチの方がわずかに高速であると思います。ただし、違いはほとんどありません。length配列のプロパティはそのpublic final memberに似ているため、フェッチlengthは一定時間の操作です。あなたがやっていたら、それは別のケースだったでしょうlist.size().

于 2013-06-08T20:46:42.473 に答える