Java 以其一致性和多功能性而聞名。 Java 提供了幾種控制流主要方法。 Java 的字源結構缺乏控制流程說明,如「goto」語句所示。在這一部分中,我們將了解為什麼 Java 沒有 goto 函數、它的一些選項,以及如何使用它們來實現類似的目標。
首先,我們來看看 Java 的語言結構。 goto 解釋可讓您根據名稱自由交換代碼部分。 Goto 在 C 和 C 中產生複雜的控制流,但程式碼通常不可讀且毫無價值。
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 }
Java 的作者省略了 goto 表達,因為它會使程式碼變得混亂並且難以理解。他們青睞結構化控制流,以獲得更清晰的程式碼和更少的錯誤。
Java 中用於管理控制流程的逐步演算法 -
入口點- 程式的執行將從已選取的入口點開始,該入口點可以是主方法或另一個入口點。
按順序執行 - 程式碼以連續的方式逐行運行,除非遇到控制流程解釋,在這種情況下執行會跳到下列斷言程式。
建立迴圈的語句循環語句(包括 for、while 和 do-while 語句)允許重複程式碼區塊,直到滿足特定條件。
即使 Java 沒有 goto,開發人員也找到了建立類似功能的方法。
標籤可以標記程式碼段,條件表達式可以根據條件控制執行。 Goto 缺乏控制力和可讀性。
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
為了示範執行情況,我們將 System.out.println() 語句插入到每個程式碼部分。這使您可以追蹤執行情況並根據情況查看正在運行的內容。控制中心顯示代碼執行訊息。
透過將程式碼封裝在方法中來建構Java控制流。透過將軟體分解為可管理的部分,方法呼叫讓我們可以瀏覽它。
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
我加入了section3()、section4()、section5()、section6()和section7()方法。 Condition、anotherCondition、yetAnotherCondition 和 FinalCondition 被它們的過程所取代。這些方法適合您。
狀態機管理複雜的控制流程。狀態機以數學方式表示轉換。狀態機組織控制流程。
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
我們將條件推理加入到condition() 的技術規格中。如果可能,請變更條件()的策略群組。
Java 中的例外處理或具有已檢查、未檢查和錯誤的 Java 異常,以及 try、catch、 throw、 throws 和 finally 關鍵字的範例和用法。
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
方法 4 複製 goto 宣告來處理例外狀況。為了「跳」到程式碼,我們發出 GotoException。嘗試使用 GotoException 控制執行。
即使沒有 goto 表達,Java 的有序控制流方法也能運作。標記、有限的關節、狀態機和有序程式設計範例可協助工程師編寫無錯誤、有效率的程式碼。要創建值得信賴、易於理解的 Java 程序,您必須接受這些可能性並遵循最佳實踐。
以上是Java支援Goto嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!