Nous savons que l'instruction RETOUR est utilisée dans une certaine méthode. L'un est utilisé pour renvoyer le résultat d'exécution de la fonction, et l'autre est utilisé dans les fonctions avec une valeur de retour du type vide. C'est juste une déclaration de retour (retour;). À l'heure actuelle, il est utilisé pour mettre fin à l'exécution de la méthode, c'est-à-dire que l'instruction après ce retour ne sera pas exécutée. Bien sûr, dans ce cas, il ne peut plus y avoir d'autre déclaration après la déclaration de retour.
J'ai rencontré quelques questions en utilisant une instruction de retour dans une déclaration d'essai et finalement
Code 1:
static int intc () {int x = 0; try {x = 1; return x;} enfin {x = 3; }} Code 2: Ajoutez une instruction de retour à l'instruction enfin du code ci-dessus
static int intc () {int x = 0; try {x = 1; return x;} enfin {x = 3; return x;}}Code trois:
static int intc () {int x = 0; try {x = 1; return x;} enfin {x = 3; return 0;}} Alors, quels sont les résultats d'exécution de ces trois méthodes?
Code 1: retour 1;
Code 2: retour 3;
Code 3: retour 0;
Quel est le principe?
La raison en est que lorsqu'une machine virtuelle Java exécute une méthode avec une valeur de retour, elle créera une zone dans la liste des variables locales pour stocker la valeur de retour de la méthode. Lors de l'exécution de l'instruction RETOUR, il lira la valeur de ce domaine pour RETOUR.
Dans le code 1, attribuez 1 à la variable x en essayez, puis copiez la valeur de la variable x dans la zone où la valeur de retour est stockée. Enfin, la zone de valeur de retour stocke 1, et une est renvoyée lorsque l'instruction RETOUR est exécutée.
Dans le code 2, 1 est également attribué à la variable x, puis la valeur de x est copiée dans la zone où la valeur de retour est stockée. À l'heure actuelle, la valeur de la zone où la valeur de retour est de 1, puis passe à l'instruction enfin. À l'heure actuelle, 3 est affecté à la variable locale x, puis copie la valeur de x dans la zone où la valeur de retour est stockée, et exécute enfin l'instruction RETOUR. La valeur dans la lecture de la zone retournée est de 3.
Dans le code trois, les instructions exécutées dans TRY sont les mêmes. Après avoir sauté à l'instruction ENFIN, 3 est affectée à la variable locale, puis 0 est affecté à la zone où la valeur de retour est stockée, et enfin l'instruction RETOUR est exécutée. La valeur dans la lecture de la zone retournée est 0, donc 0 est renvoyé.