Dans Java, lorsque les instructions Essays et enfin contiennent des instructions de retour, quelle est la situation d'exécution? ? Expliquez-le maintenant avec l'exemple suivant:
Le premier cas: l'essai contient l'instruction RETOUR et ne le contient enfin pas.
Classe publique Testtry {Static String S = ""; Public Static Void Main (String Args []) {S = Test1 (); {System.out.println ("essai ...");Ici, nous définissons une chaîne S, attribuez "A" à S Essaye, et le renvoyons directement, et attribuez finalement "B" à S dans la valeur finale de S A ou B? Vous trouverez ci-dessous les résultats de l'exécution
Essayez ..... 17 B 8 A
Nous avons constaté que le résultat final est un, mais B est imprimé avec priorité sur a. Grâce à un débogage étape par étape, nous avons constaté qu'avant d'exécuter le retour dans TRY, le code dans finalement sera exécuté, puis l'instruction de retour sera exécutée. Si la déclaration de retour est enfin incluse, que se passera-t-il?
Le deuxième cas: essayez enfin des instructions de retour.
Classe publique Testtry {Static String S = ""; Public Static Void Main (String Args []) {S = Test1 (); {System.out.println ("essai ...");Quel type de résultats se produira si S = "B"; La chaîne est-elle S A ou B?
Essayez ..... 8 B
Nous avons constaté que le résultat d'impression final est b.
Nous savons que l'instruction de retour est utilisée dans une certaine méthode. , qui est utilisé pour mettre fin à la méthode à ce moment.
public static int print () {int c = 1; (Exception e) {e.printStackTrace (); // return c; C;Le résultat de l'exécution du programme est:
courir:
Essayez l'exécution ...
Enfin exécutant ...
3
Construit avec succès (temps total: 0 seconde)
Notez qu'il ne peut y avoir qu'une seule instruction de retour aux positions 2 et 3, et qu'il doit y avoir une instruction de retour en 2, 3 et 4. Si 2 est exécuté, la méthode se terminera et l'instruction à 3 ne peut pas être exécutée.
Lorsque le bloc d'essai est exécuté à 1, la valeur de retour de la fonction sera stockée dans une autre variable temporaire (différentes variables de C, sa valeur est 102). Un autre bloc d'énoncé est rencontré à 2 et la valeur de retour est stockée dans la variable temporaire (la valeur est 3).
public static intrint () {int c = 1; -1} Enfin {C ++; System.out.println (C);Dans le code ci-dessus, il n'y a pas d'instruction de retour dans le blocage final.
Run: tryfinally102 construit avec succès (temps total: 0 seconde)
Conclusion: 1. Peu importe s'il y a une déclaration de retour dans l'essai, l'instruction enfin sera certainement exécutée (c'est enfin et le nom est bon).
2. S'il n'y a pas de relevé de retour dans et il y a un retour dans TRY, Avant d'exécuter l'instruction RETOUR dans TRY, le code est enfin exécuté d'abord, puis l'instruction RETOUR dans TRY; Inclus enfin, il reviendra directement et n'exécutera plus l'instruction de retour dans l'essai.