it-swarm.com.de

Java: Endlosschleifenkonvention

Was ist die Konvention für eine Endlosschleife in Java? Soll ich while(true) oder for(;;) schreiben? Ich persönlich würde while(true) verwenden, weil ich while-Schleifen seltener verwende.

37
Justin

Es gibt keinen Unterschied im Bytecode zwischen while(true) und for(;;), aber ich bevorzuge while(true), da es weniger verwirrend ist (insbesondere für jemanden, der neu in Java ist).

Sie können dies anhand dieses Codebeispiels überprüfen

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

Wenn Sie den Befehl javap -c ClassWithThoseMethods Sie erhalten

  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

die die gleiche Struktur zeigt (außer "Hallo" vs "Welt" Zeichenfolgen).

77
Pshemo

Ich bevorzuge while(true), weil ich while-Schleifen seltener verwende als for-Schleifen. For-Schleifen haben bessere Verwendungen und while(true) ist viel sauberer und leichter zu lesen als for(;;)

13
06needhamt

Es liegt an dir. Ich glaube nicht, dass es für so etwas eine Konvention gibt. Sie können entweder while(true) oder for(;;) verwenden

Ich würde sagen, dass ich in den Quellcodes häufiger auf while(true) stoße. for(;;) wird seltener verwendet und ist schwerer zu lesen.

7
TheEwook

Letztendlich ist es Ihre Wahl. Die folgende Java Referenz verwendet das for (;;) Format: The for Statement .

Nach meiner Erfahrung wird while(true) jedoch häufiger in Endlosschleifen verwendet.

4
blackpanther

for(;;) saugt, es ist völlig unintuitiv, für Anfänger zu lesen. Bitte verwenden Sie stattdessen while(true).

3
Franz Kafka