Mettre fin à un programme Java

J’ai trouvé des moyens de terminer (arrêter ou arrêter) mes programmes Java. J’ai trouvé deux solutions pour cela.

  1. en utilisant le retour;
    Lorsque je veux quitter ou terminer mon exécution de programme, j’ajoute ceci.

  2. using System.exit () ;
    Parfois je l’ai utilisé. J’ai lu à propos de Sytem.exit () de This Question .

Donc, je connais un peu les deux. Mais je suis toujours confus quant à la façon dont ils fonctionnent réellement. S’il vous plaît vérifier ci-dessous les codes …

public class Testing { public static void main(Ssortingng... str) { System.out.println(1); System.exit(0); System.out.println(2); return; } } 

Je suis sûr que 2 n’apparaitra pas. J’aimerais savoir pourquoi return; ou d’autres codes peuvent écrire ci-dessous l’instruction de System.exit(0); et quelle était la véritable définition du return; ( parce que c’est étrange pour moi de return sans aucune variable ou valeur )?

L’appel de System.exit(0) (ou toute autre valeur à cet égard) entraîne la fermeture de la machine virtuelle Java, mettant fin au processus en cours. Le paramètre que vous transmettez sera la valeur java processus java au système d’exploitation. Vous pouvez faire cet appel de n’importe où dans votre programme – et le résultat sera toujours le même – JVM se termine. Comme il s’agit simplement d’appeler une méthode statique dans la classe System , le compilateur ne sait pas ce qu’il va faire – et ne se plaint donc pas du code inaccessible.

déclaration de return abandonne simplement l’exécution de la méthode en cours. Cela signifie littéralement renvoyer le contrôle à la méthode d’appel . Si la méthode est déclarée comme void (comme dans votre exemple), vous n’avez pas besoin de spécifier de valeur, car vous devez renvoyer le void . Si la méthode est déclarée pour renvoyer un type particulier, vous devez spécifier la valeur à renvoyer – et cette valeur doit être du type spécifié.

return ne ferait que quitter le programme s’il se trouve dans la méthode main de la classe principale en cours d’exécution. Si vous essayez de mettre du code après cela, le compilateur se plaindra du code inaccessible, par exemple:

 public static void main(Ssortingng... str) { System.out.println(1); return; System.out.println(2); System.exit(0); } 

ne comstackra pas avec la plupart des compilateurs – produisant une erreur de unreachable code pointant vers le second appel System.out.println .

Parce que System.exit() est juste une autre méthode pour le compilateur. Il ne lit pas à l’avance et comprend que tout le programme va se fermer à ce moment-là (la JVM se ferme). Votre système d’exploitation ou votre shell peut lire le nombre entier renvoyé dans la méthode System.exit() . Il est standard que 0 signifie “quitter le programme et tout va bien” et toute autre valeur pour notifier une erreur. Il appartient au développeur de documenter ces valeurs de retour pour tous les utilisateurs.

return est un mot-clé réservé que le compilateur connaît bien. return renvoie une valeur et termine l’exécution de la fonction en cours en remontant la stack à la fonction qui l’a invoquée (le cas échéant). Dans votre code ci-dessus, le retour est void car vous n’avez rien fourni à retourner.

  1. System.exit () est une fonction qui provoque la sortie de JVM.
  2. return renvoie simplement le contrôle à la fonction d’appel.
  3. return 8 retournera le contrôle et la valeur 8 à la fonction d’appel.

System.exit () termine la JVM. Rien après System.exit () n’est exécuté. Le retour est généralement utilisé pour quitter une méthode. Si le type de retour est nul, vous pouvez utiliser return; Mais je ne pense pas que ce soit une bonne pratique de le faire dans la méthode principale. Vous n’avez rien à faire pour mettre fin à un programme, à moins que la boucle infinie ou d’autres stream étranges ne soient exécutés.

Alors reviens; ne termine pas vraiment votre programme java , il ne termine que votre fonction java (void) . Parce que dans votre cas, la fonction est la fonction principale de votre application, retourner; mettra également fin à l’application. Mais le retour dans votre exemple est inutile, car la fonction se terminera directement après ce retour de toute façon …

System.exit () mettra fin à votre programme et fermera toute fenêtre ouverte.

Qu’est-ce qui revient? signifier?

return; signifie vraiment qu’il ne retourne rien de void . C’est tout.

pourquoi revenir ou d’autres codes peuvent écrire ci-dessous l’instruction de System.exit (0);

Il est autorisé car le compilateur ne sait pas que l’appel de System.exit(0) mettra fin à la JVM . Le compilateur va simplement donner un avertissement – déclaration de retour inutile

  • Eh bien, d’abord System.exit (0) est utilisé pour terminer le programme et avoir des instructions ci-dessous n’est pas correct, bien que le compilateur ne jette aucune erreur.
  • un return; simple return; est utilisé dans une méthode de type void return pour renvoyer le contrôle d’exécution à sa méthode parente.