web-dev-qa-db-ja.com

Java:無限ループの規則

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

37
Justin

while(true)for(;;)の間にバイトコードの違いはありませんが、混乱が少ないので(特にJavaが初めての人にとって)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」の文字列を除く)。

77
Pshemo

Whileループはforループよりも使用頻度が低いため、while(true)を好みます。 forループの使用方法は優れており、while(true)for(;;)よりもはるかにクリーンで読みやすい

13
06needhamt

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

ソースコードでwhile(true)に頻繁に出会うと思います。 for(;;)はあまり使用されず、読みにくくなります。

7
TheEwook

最終的に、それはあなたの選択です。次のJavaリファレンスはfor (;;)形式を使用します: forステートメント

ただし、私の経験では、while(true)は無限ループでより頻繁に使用されます。

4
blackpanther

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

3
Franz Kafka