[解決済み] ループの前に変数を宣言するのか、ループの中で宣言するのかの違い?
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 がよいでしょう。変数の宣言と初期化は同じ場所で、できるだけ狭いスコープで行う。宣言と初期化の間にぽっかりと穴が開いてしまわないように、また必要のない名前空間を汚さないようにしましょう。
関連
-
javaの模造品QQ WeChatのチャットルーム
-
プロローグでのコンテンツは禁止されています
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] JavaScriptのオブジェクトをループスルーまたは列挙するにはどうすればよいですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] オブジェクトをメンバーとして、プレーンなJavaScriptオブジェクトをループさせる方法
-
[解決済み] StringBuilderとStringBufferの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
java.util.NoSuchElementException 原因解析と解決方法
-
Java のエラーです。未解決のコンパイル問題 解決方法
-
jd-gui Java Exceptionが発生しました。
-
Spring Boot による HTTPS アクセスの設定
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
JDKの設定時にjava.dllが見つからない、java SE Runtime Environmentが見つからない問題が発生しました。
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
javaコンパイル時のエラー:不正な文字 '\ufeff' に対する解決策です。
-
linux run jarfile Invalid or corrupt jarfile error.
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res