Ce code m'a juste fait regarder mon écran pendant quelques minutes:
loop:
for (;;) {
// ...
}
( ligne 137 ici )
Je n'avais jamais vu cela auparavant, et je n'avais aucune idée que Java avait un mot-clé "boucle" (NetBeans ne le colore même pas comme un mot-clé), et il se compile bien avec JDK 6.
Quelle est l'explication?
java
labeled-statements
Amy B
la source
la source
Comme l'ont dit d'autres affiches, c'est une étiquette, pas un mot-clé. L'utilisation d'étiquettes vous permet de faire des choses comme:
Cela permet de rompre la boucle extérieure.
Lien vers la documentation .
la source
La question est répondue, mais en remarque:
J'ai entendu parler de questions d'entrevue à la "Pourquoi ce code Java est-il valide?" (dépouillé l'exemple le plus simple; voici le plus méchant, merci Tim Büthe):
Sauriez-vous tous ce qu'est ce code (à part horrible)?
Solution: deux étiquettes,
url
ethttp
, un commentairewww.myserver.com/myfile.mp3
et un appel de méthode avec un paramètre qui porte le même nom (url
) que l'étiquette. Oui, cela compile (si vous définissez l'appel de méthode et la variable locale ailleurs).la source
Ce n'est pas un mot-clé, c'est une étiquette. Il est destiné à être utilisé avec les mots
break
-continue
clés et à l' intérieur de boucles imbriquées:la source
inner
l'étiquette est inutile ici,break;
c'est assezinner
étiquette pour sa clarté.Ce n'est pas un mot-clé; c'est une étiquette .
Il vous permet d'aller un étiqueté
break
et étiquetécontinue
.la source
C'est vraiment une réponse au commentaire de seanizer sur la réponse de org.life.java, mais je voulais mettre du code pour que je ne puisse pas utiliser la fonction de commentaire.
Bien qu'il soit très rare que je trouve une utilisation pour "break label", cela arrive parfois. Le cas le plus courant est lorsque je recherche quelque chose qui se trouve dans une structure nécessitant une boucle imbriquée pour la recherche, comme:
Habituellement, dans de tels cas, je pousse le tout dans un sous-programme afin que, sur un coup, je puisse renvoyer l'objet trouvé, et s'il tombe au bas de la boucle, je peux retourner null pour indiquer un non trouvé, ou peut-être lancer une exception. Mais cela est parfois utile.
Franchement, je pense que les inventeurs de Java ont inclus cette fonctionnalité car entre cela et la gestion des exceptions, ils ont éliminé les deux dernières utilisations légitimes de GOTO.
Addendum très tardif:
J'ai vu une bonne ligne de code bâillon une fois. Le programmeur a écrit:
Il n'a pas vraiment dit «exemple.com» mais le site Web de notre entreprise.
Cela donne l'impression qu'il y a une URL dans le code. Il se compile avec succès, comme s'il faisait quelque chose. Mais ... qu'est-ce que ça fait?
En réalité, cela ne fait rien. "http:" est un label auquel il ne fait jamais référence. Ensuite, le "//" fait du reste de la ligne un commentaire.
la source
C'est une étiquette de point de rupture, pour vous permettre de sortir d'une boucle spécifiée, plutôt que simplement celle la plus interne dans laquelle vous vous trouvez.
Il est utilisé à la ligne 148 .
la source
Vous pourriez écrire presque n'importe quoi, car c'est une étiquette ... Vous avez un exemple ici
la source
C'est une étiquette, mais regardez l'exemple suivant:
Lorsque
b>10
le flux d'exécution va à la boucle externe.la source
C'est une étiquette, et les étiquettes en Java peuvent être utilisées avec le
break
continue
mots clés et pour un contrôle supplémentaire sur les boucles.Ici, il est expliqué d'une manière plutôt bonne:
Penser en Java, rompre et continuer
la source
Ce n'est pas un mot-clé, mais une étiquette . Si
for
vous écrivez dans la bouclebreak loop;
, vous quittez cette boucle.la source
C'est une étiquette. Généralement, une étiquette utilisée en Java pour transférer le flux de contrôle à l'emplacement souhaité, tandis que tous les mots-clés, comme continuer et interrompre, ont un choix d'emplacement spécifié.
la source