web-dev-qa-db-fra.com

Java: Infinite Loop Convention

Quelle est la convention pour une boucle infinie en Java? Devrais-je écrire while(true) ou for(;;)? Personnellement, j'utiliserais while(true) parce que j'utilisais boucles moins souvent.

37
Justin

Il n'y a pas de différence dans le bytecode entre while(true) et for(;;) mais je préfère while(true) car c'est moins déroutant (surtout pour les débutants en Java).

Vous pouvez le vérifier avec cet exemple de code

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

Lorsque vous utilisez la commande javap -c ClassWithThoseMethods tu auras

  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

qui montre la même structure (sauf les chaînes "hello" vs "world").

77
Pshemo

Je préfère while(true), car j'utilise moins souvent les boucles while que les boucles for. Les boucles ont de meilleures utilisations et while(true) est beaucoup plus propre et facile à lire que for(;;)

13
06needhamt

C'est à vous. Je ne pense pas qu'il existe une convention pour une telle chose. Vous pouvez soit utiliser while(true) ou for(;;)

Je dirais que je rencontre plus souvent while(true) dans les codes sources. for(;;) est moins utilisé et plus difficile à lire.

7
TheEwook

En fin de compte, c'est votre choix. La référence Java) suivante utilise le format for (;;): The for Statement .

Cependant, while(true) est utilisé plus souvent en boucles infinies dans mon expérience.

4
blackpanther

for(;;) est nul, il est totalement inintéressant de lire pour les débutants. Veuillez utiliser while(true) à la place.

3
Franz Kafka