Javaの無限ループの規則は何ですか? while(true)
またはfor(;;)
と書くべきですか? whileループの使用頻度は少ないため、個人的にはwhile(true)
を使用します。
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」の文字列を除く)。
Whileループはforループよりも使用頻度が低いため、while(true)
を好みます。 forループの使用方法は優れており、while(true)
はfor(;;)
よりもはるかにクリーンで読みやすい
それはあなた次第です。そのようなことには慣習があるとは思わない。 while(true)
またはfor(;;)
を使用できます
ソースコードでwhile(true)
に頻繁に出会うと思います。 for(;;)
はあまり使用されず、読みにくくなります。
最終的に、それはあなたの選択です。次のJavaリファレンスはfor (;;)
形式を使用します: forステートメント 。
ただし、私の経験では、while(true)
は無限ループでより頻繁に使用されます。
for(;;)
はひどいです。新人のために読むのは全く直感的ではありません。代わりにwhile(true)
を使用してください。