Java terkenal dengan konsistensi dan serba boleh. Java menyediakan beberapa kaedah utama aliran kawalan. Konstruk etimologi Java tidak mempunyai spesifikasi aliran kawalan, seperti yang ditunjukkan oleh pernyataan "goto". Dalam bahagian ini, kita akan belajar mengapa Java tidak mempunyai fungsi goto, beberapa pilihannya, dan cara menggunakannya untuk mencapai matlamat yang sama.
Pertama, mari kita lihat struktur bahasa Java. Tafsiran goto membolehkan anda menukar bahagian kod secara bebas berdasarkan nama mereka. Goto menjana aliran kawalan kompleks dalam C dan C++, tetapi kod itu selalunya tidak boleh dibaca dan tidak bernilai.
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 }
Pengarang Java mengecualikan ungkapan goto kerana ia akan menjadikan kod berterabur dan sukar difahami. Mereka memilih aliran kawalan berstruktur untuk kod yang lebih bersih dan lebih sedikit pepijat.
Algoritma langkah demi langkah untuk menguruskan aliran kawalan dalam Java -
Entry Point- Perlaksanaan program akan bermula dari entry point yang dipilih, yang boleh menjadi kaedah utama atau entry point yang lain.
Sequential Execution - Kod berjalan baris demi baris secara berterusan melainkan tafsiran aliran kawalan ditemui, dalam kes ini pelaksanaan melompat ke rutin penegasan berikut.
Pernyataan untuk mencipta gelung Penyataan gelung (termasuk penyataan untuk, sambil dan buat sementara) membenarkan blok kod diulang sehingga syarat tertentu dipenuhi.
Walaupun Java tidak mempunyai goto, pembangun menemui cara untuk membina fungsi yang serupa.
Teg boleh menandakan segmen kod, dan ungkapan bersyarat boleh mengawal pelaksanaan berdasarkan syarat. Goto tidak mempunyai kawalan dan kebolehbacaan.
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
Untuk menunjukkan pelaksanaan, kami memasukkan pernyataan System.out.println() ke dalam setiap bahagian kod. Ini membolehkan anda menjejaki pelaksanaan dan melihat perkara yang sedang berjalan bergantung pada situasi. Pusat Kawalan memaparkan mesej pelaksanaan kod.
Bina aliran kawalan Java dengan merangkumkan kod dalam kaedah. Panggilan kaedah membolehkan kami menavigasi perisian dengan memecahkannya kepada bahagian yang boleh diurus.
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
Saya menambah kaedah seksyen3(), seksyen4(), seksyen5(), seksyen6() dan seksyen7(). Condition, anotherCondition, yetAnotherCondition, dan FinalCondition digantikan dengan prosedur mereka. Kaedah ini sesuai untuk anda.
Mesin negeri menguruskan aliran kawalan yang kompleks. Mesin negeri mewakili peralihan secara matematik. Mesin negeri mengatur aliran kawalan.
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
Kami menambah alasan bersyarat pada spesifikasi teknikal syarat(). Jika boleh, tukar kumpulan dasar untuk syarat().
Pengendalian pengecualian dalam Java atau Java pengecualian dengan ditandai, tidak ditanda dan ralat dengan contoh dan penggunaan try, catch, throw, throws dan akhirnya kata kunci.
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
Kaedah 4 Salin pernyataan goto untuk mengendalikan pengecualian. Untuk "melompat" ke kod, kami mengeluarkan GotoException. Cuba gunakan GotoException untuk mengawal pelaksanaan.
Pendekatan aliran kawalan tertib Java berfungsi walaupun tanpa ekspresi goto. Notasi, sambungan terhingga, mesin keadaan, dan paradigma pengaturcaraan berjujukan membantu jurutera menulis kod yang cekap dan bebas ralat. Untuk mencipta program Java yang boleh dipercayai dan mudah difahami, anda mesti menerima kemungkinan ini dan mengikuti amalan terbaik.
Atas ialah kandungan terperinci Adakah Java menyokong Goto?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!