Java ist für seine Konsistenz und Vielseitigkeit bekannt. Java bietet mehrere Hauptmethoden zur Steuerung des Flusses. Den etymologischen Konstrukten von Java fehlen Kontrollflussspezifikationen, wie die „goto“-Anweisung zeigt. In diesem Teil werden wir sehen, warum Java keine Goto-Funktion hat, einige seiner Optionen und wie man sie verwendet, um ähnliche Ziele zu erreichen.
Werfen wir zunächst einen Blick auf die Sprachstruktur von Java. Mit der Goto-Interpretation können Sie Codeabschnitte basierend auf ihren Namen frei austauschen. Goto generiert einen komplexen Kontrollfluss in C und C++, aber der Code ist oft unlesbar und wertlos.
label: { // Code section 1 if (condition) { // Code section 2 if (anotherCondition) { // Code section 3 break label; } else { // Code section 4 if (yetAnotherCondition) { // Code section 5 if (finalCondition) { // Code section 6 } } } } // Code section 7 }
Die Autoren von Java haben den goto-Ausdruck weggelassen, weil er den Code unübersichtlich und schwer verständlich machen würde. Sie bevorzugen einen strukturierten Kontrollfluss für saubereren Code und weniger Fehler.
Schritt-für-Schritt-Algorithmus zur Verwaltung des Kontrollflusses in Java -
Einstiegspunkt – Die Ausführung des Programms beginnt am ausgewählten Einstiegspunkt, der die Hauptmethode oder ein anderer Einstiegspunkt sein kann.
Sequentielle Ausführung – Der Code wird Zeile für Zeile kontinuierlich ausgeführt, es sei denn, es wird eine Kontrollflussinterpretation festgestellt. In diesem Fall springt die Ausführung zur folgenden Assertionsroutine.
Anweisungen zum Erstellen von Schleifen Schleifenanweisungen (einschließlich for-, while- und do-while-Anweisungen) ermöglichen die Wiederholung von Codeblöcken, bis eine bestimmte Bedingung erfüllt ist.
Obwohl es in Java kein Goto gab, haben Entwickler Möglichkeiten gefunden, ähnliche Funktionen zu erstellen.
Tags können Codesegmente markieren und bedingte Ausdrücke können die Ausführung basierend auf Bedingungen steuern. Goto mangelt es an Kontrolle und Lesbarkeit.
public class GotoExample { public static void main(String[] args) { GotoExample program = new GotoExample(); program.execute(); } private void execute() { label: { System.out.println("Executing Code Section 1"); // Code section 1 if (condition) { System.out.println("Executing Code Section 2"); // Code section 2 if (anotherCondition) { System.out.println("Executing Code Section 3"); // Code section 3 break label; } else { System.out.println("Executing Code Section 4"); // Code section 4 if (yetAnotherCondition) { System.out.println("Executing Code Section 5"); // Code section 5 if (finalCondition) { System.out.println("Executing Code Section 6"); // Code section 6 } } } } System.out.println("Executing Code Section 7"); // Code section 7 } } private boolean condition = true; private boolean anotherCondition = true; private boolean yetAnotherCondition = true; private boolean finalCondition = true; }
Executing Code Section 1 Executing Code Section 2 Executing Code Section 3
Um die Ausführung zu demonstrieren, fügen wir System.out.println()-Anweisungen in jeden Codeabschnitt ein. Dadurch können Sie die Ausführung verfolgen und sehen, was je nach Situation ausgeführt wird. Das Control Center zeigt Meldungen zur Codeausführung an.
Konstruieren Sie den Java-Kontrollfluss, indem Sie Code in Methoden kapseln. Methodenaufrufe ermöglichen es uns, durch die Software zu navigieren, indem wir sie in überschaubare Teile zerlegen.
public class GotoExample { public static void main(String[] args) { GotoExample program = new GotoExample(); program.execute(); } private void execute() { section1(); if (condition()) { section2(); if (anotherCondition()) { section3(); return; } else { section4(); if (yetAnotherCondition()) { section5(); if (finalCondition()) { section6(); } } } } section7(); } private void section1() { System.out.println("Executing Code Section 1"); // Code section 1 } private void section2() { System.out.println("Executing Code Section 2"); // Code section 2 } private void section3() { System.out.println("Executing Code Section 3"); // Code section 3 } private void section4() { System.out.println("Executing Code Section 4"); // Code section 4 } private void section5() { System.out.println("Executing Code Section 5"); // Code section 5 } private void section6() { System.out.println("Executing Code Section 6"); // Code section 6 } private void section7() { System.out.println("Executing Code Section 7"); // Code section 7 } private boolean condition() { // Define the condition logic return true; } private boolean anotherCondition() { // Define the anotherCondition logic return true; } private boolean yetAnotherCondition() { // Define the yetAnotherCondition logic return true; } private boolean finalCondition() { // Define the finalCondition logic return true; } }
Executing Code Section 1 Executing Code Section 2 Executing Code Section 3
Ich habe die Methoden section3(), section4(), section5(), section6() und section7() hinzugefügt. Condition, anotherCondition, YetAnotherCondition und FinalCondition werden durch ihre Prozeduren ersetzt. Diese Methoden sind für Sie geeignet.
Zustandsmaschine verwaltet den komplexen Kontrollfluss. Zustandsmaschinen stellen Übergänge mathematisch dar. Zustandsmaschinen organisieren den Kontrollfluss.
enum State { STATE_1, STATE_2, STATE_3, STATE_4, STATE_5, STATE_6, STATE_7 } public class GotoExample { public static void main(String[] args) { GotoExample program = new GotoExample(); program.execute(); } private void execute() { State currentState = State.STATE_1; while (currentState != State.STATE_7) { switch (currentState) { case STATE_1: section1(); currentState = State.STATE_2; break; case STATE_2: if (condition()) { section2(); currentState = State.STATE_3; } else { currentState = State.STATE_4; } break; // Define other states and transitions } } } private void section1() { System.out.println("Executing Code Section 1"); // Code section 1 } private void section2() { System.out.println("Executing Code Section 2"); // Code section 2 } // Define other section methods and states private boolean condition() { // Define the condition logic return true; } }
Executing Code Section 1 Executing Code Section 2
Wir haben der technischen Spezifikation von condition() bedingtes Denken hinzugefügt. Ändern Sie nach Möglichkeit die Richtliniengruppe für condition().
Ausnahmebehandlung in Java oder Java-Ausnahmen mit aktivierten, nicht aktivierten und Fehlern mit Beispielen und Verwendung der Schlüsselwörter try, Catch, Throw, Throws und Final.
public class GotoExample { public static void main(String[] args) { try { section1(); if (condition()) { section2(); if (anotherCondition()) { section3(); throw new GotoException(); } else { section4(); if (yetAnotherCondition()) { section5(); if (finalCondition()) { section6(); throw new GotoException(); } } } } section7(); } catch (GotoException e) { // Handle the exception to continue execution // or perform any necessary operations } } private static void section1() { System.out.println("Executing Code Section 1"); // Code section 1 } private static void section2() { System.out.println("Executing Code Section 2"); // Code section 2 } private static void section3() { System.out.println("Executing Code Section 3"); // Code section 3 } private static void section4() { System.out.println("Executing Code Section 4"); // Code section 4 } private static void section5() { System.out.println("Executing Code Section 5"); // Code section 5 } private static void section6() { System.out.println("Executing Code Section 6"); // Code section 6 } private static void section7() { System.out.println("Executing Code Section 7"); // Code section 7 } private static boolean condition() { // Define the condition logic return true; } private static boolean anotherCondition() { // Define the anotherCondition logic return true; } private static boolean yetAnotherCondition() { // Define the yetAnotherCondition logic return true; } private static boolean finalCondition() { // Define the finalCondition logic return true; } } class GotoException extends Exception { // Custom exception class to simulate the "goto" behavior }
Executing Code Section 1 Executing Code Section 2 Executing Code Section 3
Methode 4 Kopieren Sie die goto-Anweisung, um Ausnahmen zu behandeln. Um zum Code zu „springen“, geben wir eine GotoException aus. Versuchen Sie, GotoException zu verwenden, um die Ausführung zu steuern.
Der geordnete Kontrollflussansatz von Java funktioniert auch ohne Goto-Ausdrücke. Notationen, endliche Verbindungen, Zustandsautomaten und sequentielle Programmierparadigmen helfen Ingenieuren, fehlerfreien und effizienten Code zu schreiben. Um vertrauenswürdige, leicht verständliche Java-Programme zu erstellen, müssen Sie diese Möglichkeiten akzeptieren und Best Practices befolgen.
Das obige ist der detaillierte Inhalt vonUnterstützt Java Goto?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!