44

Javaの無限ループの規則は何ですか? または書くべきですwhile(true)for(;;)while(true)while ループの使用頻度が低いため、個人的に使用します。

4

5 に答える 5

83

while(true)と の間にバイトコードの違いはありませんが、(特に Java の初心者にとっては) 混乱が少ないためfor(;;)、私は好みます。while(true)

このコード例で確認できます

void test1(){
    for (;;){
        System.out.println("hello");
    }
}
void test2(){
    while(true){
        System.out.println("world");
    }
}

コマンドを使用すると、次のjavap -c ClassWithThoseMethodsようになります

  void test1();
    Code:
       0: getstatic     #15                 // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #21                 // String hello
       5: invokevirtual #23                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: goto          0

  void test2();
    Code:
       0: getstatic     #15                 // Field java/lang/System.out:Ljava/io/PrintStream;
       3: ldc           #31                 // String world
       5: invokevirtual #23                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
       8: goto          0

同じ構造を示しています(「hello」と「world」の文字列を除く)。

于 2013-04-13T15:48:25.757 に答える
15

while(true)for ループよりも while ループを使用する頻度が低いため、私はを好みます。for ループはより適切に使用でき、while(true)よりクリーンで読みやすいです。for(;;)

于 2013-04-13T15:46:58.907 に答える
9

それはあなた次第です。私はそのようなことのための慣習があるとは思わない。while(true)またはのいずれかを使用できますfor(;;)

while(true)ソースコードでより頻繁に遭遇すると思います。for(;;)使用頻度が低く、読みにくい。

于 2013-04-13T15:47:12.353 に答える
6

for(;;)ひどい、新人にとって読むのは完全に直感的ではありません。while(true)代わりに使用してください。

于 2013-04-13T15:50:55.080 に答える
5

最終的に、それはあなたの選択です。Java チュートリアルでは、forwhileの両方が表示されます。

ただし、while(true)はるかに理解しやすいため、より頻繁に使用されます。

于 2013-04-13T15:48:25.040 に答える