2013-04-13 6 views
30

Javaの無限ループの規約は何ですか? while(true)またはfor(;;)と書いてください。 whileループをあまり使わないので、私は個人的にwhile(true)を使用します。Java:無限ループコンベンション

+6

私はむしろ 'while(running)'をしたいと思っています。 – NilsH

+2

'break'が出てきます。 – Justin

+5

for(;;)is not pretty。 (実行中)はさらに読むことができる – radai

答えて

66

while(true)for(;;)の間にバイトコードの違いはありませんが、特に(Javaを初めて使用する人にとって)あまり混乱しないので、while(true)を好んでいます。

は、あなたが(「hello」を「世界」の文字列対を除く)と同じ構造を示している

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 

を取得します。このコード例

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

コマンドjavap -c ClassWithThoseMethodsを使用して、それを確認することができます。

+9

+1:説明のために – Aubin

+1

+1「読みやすい」と「理解する」を区別する+1。他のすべての回答が失敗しました。 – ChiefTwoPencils

+1

私は、Javaが無限ループ構築を思いついているので、他の言語と同様、回避策は必要ないと思います。 'while'を必要とせずに' do {} 'を提案してもいいし、単純に' loop {} 'とすることもできます。 –

12

私はwhileループをforループよりも頻繁に使用するので、私はwhile(true)を好んでいます。 forループはより良い使い方を持っており、

+1

while(true)は保守性です:真は将来的に論理条件になるかもしれません – Aubin

+5

@Aubin OTOH、 'for(;;)'はゴルフ時にもっと楽しいです –

+3

@Aubin、 〜のために! 'for(; condition(););'のように貼り付けてください。 'for'を使うことは、2つのセミコラのうち2番目のセミコラの後にループの反復回数(または反復の間の他のもの)を数える変数を簡単に追加できることを意味します。 – AJMansfield

6

よりも読みやすくなります。while(true)は、はるかにクリーンで読みやすいです。そんなことのための大会はないと思う。 while(true)またはfor(;;)

私は、ソースコードでwhile(true)が頻繁に発生すると言います。 for(;;)はあまり使用されず、読みにくいです。

+1

while(true)は、保守性を支持するもう一つの引数です:trueは将来論理条件になる可能性があります – Aubin

+0

3文字の単語のための「読みにくい」ことは何もありません。 – ChiefTwoPencils

3

最終的にはあなたの選択です。次のJavaリファレンスではfor (;;)という形式を使用しています:The for Statement

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

+0

参照の場合 – Aubin

+0

[whileおよびdo-whileステートメント](http://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html)は、「while(true)」でこれを行います – Justin

0

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

関連する問題