1. ホーム
  2. java

[解決済み] ループの前に変数を宣言するのか、ループの中で宣言するのかの違い?

2022-03-17 12:02:11

質問

ループの中で繰り返し宣言するのではなく、ループの前に捨て変数を宣言することは、一般的に何か(パフォーマンス)違いがあるのだろうかと、いつも疑問に思っています。 A (かなり無意味) Javaでの例です。

a) をループの前に宣言しています。

double intermediateResult;
for(int i=0; i < 1000; i++){
    intermediateResult = i;
    System.out.println(intermediateResult);
}

b) ループ内で(繰り返し)宣言している。

for(int i=0; i < 1000; i++){
    double intermediateResult = i;
    System.out.println(intermediateResult);
}

どっちがいいんだろう a または b ?

変数宣言が繰り返されているのではないでしょうか(例 b ) は、より多くのオーバーヘッドを発生させます。 理論上 しかし、コンパイラは十分に賢いので、それは問題ではありません。例 b の方がコンパクトで、変数のスコープを使用する場所に限定できるという利点があります。それでも、私はこの例に従ってコーディングすることが多い。 a .

編集する 特にJavaのケースに興味があります。

どのように解決するのですか?

どちらが良いですか? a または b ?

パフォーマンスの観点からは、測定してみないとわからないですね。(そして私の意見では、もし違いを測定できるのであれば、そのコンパイラはあまり良くないと思います)。

メンテナンスの観点から。 b がよいでしょう。変数の宣言と初期化は同じ場所で、できるだけ狭いスコープで行う。宣言と初期化の間にぽっかりと穴が開いてしまわないように、また必要のない名前空間を汚さないようにしましょう。