Y a-t-il une instruction goto en Java?
Je suis confus au sujet de ce. La plupart d'entre nous ont dit qu'il n'existe aucune instruction goto en Java.
Mais j'ai trouvé que c'est l'un des mots clés de Java. Où peut-il être utilisé? Si elle ne peut pas être utilisé, alors pourquoi était-il inclus dans Java comme un mot-clé?
source d'informationauteur Venkat
Vous devez vous connecter pour publier un commentaire.
La Java liste de mots clés spécifie le
goto
mot-clé, mais il est marqué comme "non utilisé".Il a été à l'origine de la JVM (voir réponse par @VitaliiFedorenko), mais ensuite retiré. Il a probablement été conservé comme un mot clé réservé au cas où il venait à être ajouté à une version ultérieure de Java.
Si
goto
n'était pas sur la liste, et il est ajouté à la langue plus tard, un code existant qui a utilisé le motgoto
comme un identificateur (nom de la variable nom de la méthode, etc...) allait se briser. Mais parce quegoto
est un mot-clé, ce code ne sera même pas compiler dans le présent, et il reste possible de le faire réellement faire quelque chose plus tard, sans casser le code existant.Pour empêcher les gens d'être tué par les velociraptors.
James Gosling à l'origine de la JVM avec le soutien de
goto
états, mais ensuite, il a supprimé cette fonctionnalité inutile. La raison principalegoto
est inutile, c'est que généralement il peut être remplacé avec plus lisible états (commebreak/continue
) ou par l'extraction d'un morceau de code dans une méthode.Source: James Gosling, Q&Une session
Le mot-clé existe, mais il n'est pas mis en œuvre.
La seule bonne raison d'utiliser goto que je peux penser est-ce:
En Java, vous pouvez le faire comme ceci:
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html
Donc ils pourraient l'être un jour, si la langue concepteurs ressenti le besoin.
Aussi, si les programmeurs de langues qui n'ont que ces mots-clés (par exemple. C, C++), les utilisent par erreur, le compilateur Java peuvent donnent un message d'erreur.
Ou peut-être que c'était juste pour arrêter les programmeurs d'utiliser goto 🙂
Ils sont réservés pour une utilisation future (voir: Les Mots Clés Du Langage Java)
La raison pourquoi il n'y a pas d'instruction goto en Java peut être trouvé dans "Le Langage Java Environnement":
Un exemple d'utilisation de "continuer" étiquettes en Java:
Résultats:
Il est important de comprendre que le
goto
construire est un vestige de l'époque que les programmeurs programmé en code machine et le langage d'assemblage. Parce que ces langues sont donc de base (comme dans, chaque instruction ne fait que chose), le programme de contrôle de flux est réalisé entièrement avecgoto
consolidés (mais en langage d'assemblage, ils sont appelés les saut ou direction instructions).Maintenant, bien que le langage C est assez bas niveau, il peut être considéré comme très haut niveau de l'assemblée de la langue de chaque instruction et la fonction en C peut aisément être décomposé en instructions en langage assembleur. Bien que C est pas la langue principale du programme des ordinateurs de nos jours, il est encore largement utilisé dans des applications de niveau, tels que les systèmes embarqués. Parce que C de la fonction, donc proche de l'assembleur de la fonction, il n'a de sens que
goto
est inclus dans C.Il est clair que Java est une évolution de C/C++. Java partage beaucoup de caractéristiques à partir de C, mais les résumés beaucoup plus de détails, et, par conséquent, est tout simplement écrit différemment. Java est un très haut de niveau de langue, de sorte qu'il n'est tout simplement pas nécessaire d'avoir de bas niveau des fonctions comme
goto
quand plus haut niveau des constructions comme pour les fonctions, pour, pour chacun d'eux, et tandis que les boucles ne le programme de contrôle de flux. Imaginez si vous étiez dans une fonction et a ungoto
à une étiquette dans une autre fonction. Qu'arriverait-il si l'autre fonction de retour? Cette idée est absurde.Cela ne veut pas nécessairement dire pourquoi Java inclut les
goto
relevé n'est pas dans la compilation, mais il est important de savoir pourquoigoto
a jamais été utilisé, en premier lieu, dans le bas-niveau des applications, et pourquoi il n'a tout simplement pas de sens pour être utilisé en Java.Non,
goto
n'est pas utilisé, mais vous pouvez définir des étiquettes et de laisser une boucle jusqu'à l'étiquette. Vous pouvez utiliserbreak
oucontinue
suivi de l'étiquette. De sorte que vous pouvez sauter plus d'une boucle de niveau. Jetez un oeil à le tutoriel.Car il n'est pas soutenu et pourquoi voulez-vous une
goto
mots clés qui n'ont rien fait ou une variable nomméegoto
?Bien que vous pouvez utiliser
break label;
etcontinue label;
déclarations à cegoto
. Mais je ne le recommande pas.Non, heureusement, il n'y a pas
goto
en Java.La
goto
mot-clé n'est réservé, mais n'est pas utilisé (il en va de même pourconst
).Non,
goto
n'est pas utilisé en Java, en dépit d'être un mot réservé. Le même est vrai pourconst
. Ces deux sont utilisés en C++, qui est probablement la raison pour laquelle ils sont réservés; l'intention était probablement pour éviter de confondre les programmeurs en C++ de la migration vers Java, et peut-être aussi la possibilité de leur utilisation dans les révisions ultérieures de Java.Comme il l'a souligné, il n'y a pas de
goto
en Java, mais le mot d'ordre a été réservé dans le cas où le Soleil se sentait comme l'ajout degoto
en Java d'un jour. Ils voulaient être en mesure de l'ajouter sans casser trop de code, de sorte qu'ils réservés à la clé. Notez qu'avec Java 5, ils ont ajouté leenum
mot-clé et il n'a pas rompu que beaucoup de code.Bien que Java n'a pas de
goto
il a des constructions qui correspondent à certaines utilisations de l'goto
à savoir être en mesure debreak
etcontinue
nommés boucles. Aussi,finally
peut être considéré comme une sorte de twistedgoto
.À interdire les déclarations de variables avec le même nom.
par exemple
int i = 0, goto;
C'est très bien considérée comme l'une de ces choses que vous Ne le faites Pas, mais a probablement été répertorié comme un mot réservé pour éviter toute confusion pour les développeurs.
http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.goto
Si vous avez été dit qu'il n'y a pas d'instruction goto en Java, vous avez été dupé. En effet, Java est constitué de deux couches de "la source" de code.
Notez que vous pouvez remplacer la plupart de la plus bénigne utilise de goto par
retour
pause
pause étiquette
jeter à l'intérieur de try-catch-finally
Voir le lien suivant est montre tous les produits java sont des mots réservés et vous indique quelles sont les versions où ils ajouté.
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html
goto est réservé, même si elle n'est pas utilisée actuellement, ne jamais dire jamais cependant 🙂
Parce que, bien que le langage Java ne l'utilise pas, le bytecode JVM.
Bien sûr, il est un mot clé, mais il n'est pas utilisé au niveau du code source.
Mais si vous utilisez jasmin ou autre langage de plus bas niveau, qui est transformé en bytecode, puis "goto" est-il
Je ne suis pas un fan de
goto
soit, comme c'est généralement le rend le code moins lisible. Cependant, je crois qu'il y a des exceptions à cette règle (surtout quand il s'agit de lexers et analyseurs!)Bien Sûr, vous pouvez toujours apporter votre programme dans Kleene Normalform par de le traduire en quelque chose assembleur et puis écrire quelque chose comme
(Donc en gros, vous écrivez une machine virtuelle qui exécute votre code binaire... où
line
correspond au pointeur d'instruction)Qui est beaucoup plus lisible que le code qui utilise
goto
n'est-ce pas?goto n'est pas dans Java
vous devez utiliser GOTO
Mais il ne fonctionne pas correctement.dans les principaux java mot, il n'est pas utilisé.
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html