Javaの無限ループの規約は何ですか? while(true)
またはfor(;;)
と書いてください。 whileループをあまり使わないので、私は個人的にwhile(true)
を使用します。Java:無限ループコンベンション
答えて
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
を使用して、それを確認することができます。
+1:説明のために – Aubin
+1「読みやすい」と「理解する」を区別する+1。他のすべての回答が失敗しました。 – ChiefTwoPencils
私は、Javaが無限ループ構築を思いついているので、他の言語と同様、回避策は必要ないと思います。 'while'を必要とせずに' do {} 'を提案してもいいし、単純に' loop {} 'とすることもできます。 –
私はwhileループをforループよりも頻繁に使用するので、私はwhile(true)
を好んでいます。 forループはより良い使い方を持っており、
while(true)は保守性です:真は将来的に論理条件になるかもしれません – Aubin
@Aubin OTOH、 'for(;;)'はゴルフ時にもっと楽しいです –
@Aubin、 〜のために! 'for(; condition(););'のように貼り付けてください。 'for'を使うことは、2つのセミコラのうち2番目のセミコラの後にループの反復回数(または反復の間の他のもの)を数える変数を簡単に追加できることを意味します。 – AJMansfield
よりも読みやすくなります。while(true)
は、はるかにクリーンで読みやすいです。そんなことのための大会はないと思う。 while(true)
またはfor(;;)
私は、ソースコードでwhile(true)
が頻繁に発生すると言います。 for(;;)
はあまり使用されず、読みにくいです。
while(true)は、保守性を支持するもう一つの引数です:trueは将来論理条件になる可能性があります – Aubin
3文字の単語のための「読みにくい」ことは何もありません。 – ChiefTwoPencils
最終的にはあなたの選択です。次のJavaリファレンスではfor (;;)
という形式を使用しています:The for Statement。
しかし、while(true)
は私の経験では無限ループでより頻繁に使用されています。
for(;;)
新人のために読むのは完全に直感的ではありません。代わりにwhile(true)
を使用してください。
- 1. Java - 無限再帰
私はむしろ 'while(running)'をしたいと思っています。 – NilsH
'break'が出てきます。 – Justin
for(;;)is not pretty。 (実行中)はさらに読むことができる – radai