Ich habe Möglichkeiten gefunden, meine Java-Programme zu beenden (herunterzufahren oder zu stoppen). Ich habe zwei Lösungen dafür gefunden.
mit return;
Wenn ich meine Programmausführung beenden oder beenden möchte, füge ich dies hinzu.using System.exit () ;
Manchmal habe ich es benutzt. Ich las über Sytem.exit () von dieser Frage .
Also weiß ich ein wenig über beide. Aber ich bin immer noch verwirrt darüber, wie sie tatsächlich funktionieren. Bitte überprüfen Sie die folgenden Codes ...
public class Testing {
public static void main(String... str) {
System.out.println(1);
System.exit(0);
System.out.println(2);
return;
}
}
Ich bin sicher, dass 2 nicht erscheinen wird. Ich würde gerne wissen, warum return;
oder andere Codes unter die Aussage von schreiben können System.exit(0);
und wofür die eigentliche Definition war return;
( weil es für mich seltsam ist, return
keine Variablen oder Werte zu haben ).
Antworten:
Durch Aufrufen
System.exit(0)
(oder eines anderen Werts) wird die virtuelle Java-Maschine beendet und der aktuelle Prozess beendet. Der Parameter, den Sie übergeben, ist der Rückgabewert, den derjava
Prozess an das Betriebssystem zurückgibt. Sie können diesen Aufruf von überall in Ihrem Programm ausführen - und das Ergebnis ist immer das gleiche - JVM wird beendet. Da dies lediglich eine statische Methode in derSystem
Klasse aufruft , weiß der Compiler nicht, was er tun wird - und beschwert sich daher nicht über nicht erreichbaren Code.return
Anweisung bricht einfach die Ausführung der aktuellen Methode ab. Es bedeutet wörtlich, das Steuerelement an die aufrufende Methode zurückzugeben . Wenn die Methode alsvoid
(wie in Ihrem Beispiel) deklariert ist , müssen Sie keinen Wert angeben, da Sie zurückgeben müssenvoid
. Wenn die Methode für die Rückgabe eines bestimmten Typs deklariert ist, müssen Sie den zurückzugebenden Wert angeben - und dieser Wert muss vom angegebenen Typ sein.return
würde dazu führen, dass das Programm nur beendet wird, wenn es sich innerhalb dermain
Methode der auszuführenden Hauptklasse befindet. Wenn Sie versuchen, Code danach einzufügen, beschwert sich der Compiler über nicht erreichbaren Code, zum Beispiel:public static void main(String... str) { System.out.println(1); return; System.out.println(2); System.exit(0); }
wird mit den meisten Compilern nicht kompiliert - ein
unreachable code
Fehler, der auf den zweitenSystem.out.println
Aufruf verweist .quelle
quelle
Weil
System.exit()
ist nur eine andere Methode für den Compiler. Es liest nicht weiter und stellt fest, dass das gesamte Programm an diesem Punkt beendet wird (die JVM wird beendet). Ihr Betriebssystem oder Ihre Shell kann die Ganzzahl lesen, die in derSystem.exit()
Methode zurückgegeben wird. Es ist Standard für0
"Programm beenden und alles ging in Ordnung" und jeder andere Wert, um einen Fehler zu melden, bedeutet. Es ist Sache des Entwicklers, diese Rückgabewerte für alle Benutzer zu dokumentieren.return
Andererseits ist es ein reserviertes Schlüsselwort, das der Compiler gut kennt.return
Gibt einen Wert zurück und beendet den Lauf der aktuellen Funktion, wobei der Stapel wieder zu der Funktion verschoben wird, die ihn aufgerufen hat (falls vorhanden). In Ihrem obigen Code wird zurückgegeben,void
da Sie nichts zur Rückgabe angegeben haben.quelle
null
? Ist es nichts so nichtig? Sie könnennull
die Methode mit dem Rückgabetyp as nicht zurückgebenvoid
.System.exit () beendet die JVM. Nichts nachdem System.exit () ausgeführt wurde. Return wird im Allgemeinen zum Beenden einer Methode verwendet. Wenn der Rückgabetyp ungültig ist, können Sie return verwenden. Aber ich denke nicht, dass es eine gute Praxis ist, dies in der Hauptmethode zu tun. Sie müssen nichts tun, um ein Programm zu beenden, es sei denn, eine Endlosschleife oder ein seltsamer anderer Ausführungsfluss.
quelle
Also kehre zurück; Beendet Ihr Java-Programm nicht wirklich , sondern nur Ihre Java-Funktion (void) . Da in Ihrem Fall die Funktion die Hauptfunktion Ihrer Anwendung ist, geben Sie return zurück. beendet auch die Anwendung. Aber die Rückkehr; in Ihrem Beispiel ist nutzlos, da die Funktion ohnehin direkt nach dieser Rückgabe beendet wird ...
Das System.exit () beendet Ihr Programm vollständig und schließt jedes geöffnete Fenster.
quelle
return;
bedeutet wirklich, dass es nichts zurückgibtvoid
. Das ist es.Dies ist zulässig, da der Compiler nicht weiß, dass der Aufruf
System.exit(0)
das beendetJVM
. Der Compiler gibt nur eine Warnung aus - unnötige return-Anweisungquelle
return;
In einer Methode vom Typ void return wird eine Ebene verwendet, um die Ausführungssteuerung an die übergeordnete Methode zurückzugeben.quelle