JavaRush /Blog Java /Random-MS /Penyataan putus dalam Java
iloveski
Tahap
Москва

Penyataan putus dalam Java

Diterbitkan dalam kumpulan
Salam kepada semua rakan sekerja dan mereka yang berminat.
Penyataan pecah dalam Java - 1
Hari ini kita akan melihat ciri seperti bahasa pengaturcaraan Java sebagai pengendali rehat. Ini adalah artikel pertama mengenai topik pengendali peralihan, jadi jika anda suka, saya akan gembira untuk menulis lebih banyak lagi. Saya ingin ambil perhatian segera bahawa artikel ini ditujukan terutamanya untuk pembangun pemula, dan pelajar yang lebih mahir mungkin tidak menemui sesuatu yang baharu untuk diri mereka sendiri di sini. Jadi, mari kita pergi. Di Java, terdapat 2 cara untuk menukar susunan arahan program dilaksanakan: pernyataan lompat dan mekanisme pengendalian pengecualian. Terdapat tiga operator lompatan di java: break, continue dan return. Hari ini saya menjemput anda untuk melihat dengan lebih dekat pengendali break. Pengendalian pengecualian adalah topik yang sangat luas sehingga ia berada di luar skop artikel ini. Terdapat tiga cara untuk menggunakan pernyataan rehat dalam java. Cara pertama dan paling popular ialah menggunakannya breakuntuk keluar dari gelung lebih awal, sebagai contoh:
public class SimpleExample {
    public static void main(String[] args) {
        findNumberInLoop(3);
    }
    public static void findNumberInLoop(int number){
        for (int i = 0; i < 10; i++) {
            if (i == number) {
                break;
            }
            System.out.println(i);
        }
        System.out.println("cycle was finished");
    }
}
Contoh ini akan memaparkan:
1
2
cycle was finished
Ini bermakna apabila pembilang gelung imenjadi sama dengan parameter yang diluluskan number, iaitu nombor 3, pelaksanaan gelung ditamatkan lebih awal. Jika program mempunyai beberapa gelung bersarang, maka pecahkan output hanya dari gelung paling dalam, sebagai contoh:
public class SimpleExample {
    public static void main(String[] args) {
        findNumberInLoop(3);
    }
    public static void findNumberInLoop(int number){
        for(int i = 0; i < 5; i++) {
            for (int j =0; j < 10; j++) {
                if(j == number) {
                    break;
                }
                System.out.print(j);
            }
            System.out.println();
        }
        System.out.println("cycles was finished");
    }
}
Contoh ini menghasilkan output:
012
012
012
012
012
cycles was finished
Seperti yang dapat dilihat daripada contoh, gelung dalam terganggu setiap kali pada nombor 3 (parameter number), dan gelung luar dilaksanakan 5 kali, seperti yang dimaksudkan. Dalam java, anda boleh menggunakan lebih daripada satu penyataan rehat dalam satu gelung, tetapi ini tidak digalakkan, kerana kebolehbacaan dan struktur kod sangat terdegradasi. Penggunaan kedua breakialah menggunakannya untuk mengganggu pelaksanaan pernyataan dalam branches switch, sebagai contoh:
public class SimpleExample {
    public static void main(String[] args) {
        square(2);
    }

    public static void square(int number){
        switch (number){
            case 1:
                System.out.println(number*number);
                break;
            case 2:
                System.out.println(number*number);
                break;
            case 3:
                System.out.println(number*number);
                break;
        }
        System.out.println("after switch");
    }
}
Menjalankan contoh ini akan menghasilkan output:
4
after switch
Pernyataan rehat memberikan kawalan kepada kod berikutan keseluruhan blok switch. Jika anda tidak nyatakan breakdalam switchcontoh ini:
public class SimpleExample {
    public static void main(String[] args) {
        square(2);
    }
    public static void square(int number){
        switch (number){
            case 1:
                System.out.println(number*number);
            case 2:
                System.out.println(number*number);
            case 3:
                System.out.println(number*number);
        }
        System.out.println("after switch");
    }
}
Output tidak akan seperti yang diharapkan:
4
4
after switch
Ini berlaku kerana selepas blok itu dilaksanakan, case 2program terus melaksanakan semua blok kes berikutnya , yang memberikan kami output yang sepadan. Kadangkala ciri pengendali ini switch boleh memberi manfaat kepada kami, contohnya:
public class SimpleExample {
    public static void main(String[] args) {
        compare(2);
        compare(7);
        compare(12);
    }
    public static void compare(int number){
        switch (number){
            case 0:
            case 1:
            case 2:
            case 3:
            case 4:
            case 5:
                System.out.println("number is less than 5 or equal 5");
                break;
            case 6:
            case 7:
            case 8:
            case 9:
                System.out.println("number is greater than 5");
                break;
            default:
                System.out.println("number is less than 0 or greater than 9");
        }
        System.out.println("after switch");
    }
}
Program ini membandingkan nombor yang diberikan dengan nombor 5 dan memberikan output berikut:
after switch
number is greater than 5
after switch
number is less than 0 or greater than 9
after switch
Apabila kaedah dipanggil buat kali pertama, operator switchmemindahkan kawalan kepada operator case 2dan kemudian kepada operator breakdalam case 5. Panggilan kedua adalah serupa dengan yang pertama, tetapi bermula dengan c case 7. Panggilan ketiga tidak menemui nilai yang sesuai antara semua kes, jadi pengendali dilaksanakan default. Cara ketiga ialah menggunakan operator breakdan bukannya gotooperator C. Untuk melakukan ini, kami akan menggunakan bentuk khas operator breakyang dipanggil breakdengan label. Borang ini kelihatan seperti break метка;Label - ini biasanya mana-mana nama yang sesuai daripada ruang nama java, sebelum blok kod. Selain itu, selepas menggunakan blok kod ini breakdengan label, kod akan terus dilaksanakan dari tempat selepas blok dengan label yang sepadan, contohnya:
public class SimpleExample {
    public static void main(String[] args) {
        howWeUseLabels(true);
        System.out.println();
        howWeUseLabels(false);
    }
    public static void howWeUseLabels(boolean bool) {
        firstBlock:{
            secondBlock:{
                thirdBlock:{
                    System.out.println("We will see it always");
                    if(bool) {
                        break secondBlock;
                    }
                    System.out.println("We won't see it if bool == true");
                }
                System.out.println("We won't see it if bool == true");
            }
            System.out.println("We will see it always");
        }
    }
}
Contoh ini akan menghasilkan output berikut:
We will see it always
We will see it always

We will see it always
We won't see it if bool == true
We won't see it if bool == true
We will see it always
Selepas panggilan kaedah pertama, pengendali breakmemindahkan kawalan ke hujung blok secondBlock, keluar secondBlockdan thirdBlock, sambil melaksanakan pengendali lain println()di hujung firstBlock. Selepas panggilan kedua, semua talian dipaparkan pada skrin. Label juga boleh digunakan untuk menunjukkan kitaran. Perlu diingat bahawa anda hanya boleh pergi ke label dari dalam blok kod yang ditunjukkan oleh label; sebagai contoh, kod tersebut tidak akan disusun:
public class SimpleExample {
    public static void main(String[] args) {
        label:{
            System.out.println("inside label");
        }
        if(true) {
            break label;
        }
        System.out.println("This is error");
    }
}
Nota tentang kebersihan kod dan pernyataan break: Terdapat nasihat yang diterima umum untuk menggunakan pernyataan breakdengan berhati-hati, kerana penggunaannya breakmenjadikan gelung lebih sukar untuk difahami dan memaksa pengaturcara melihat ke dalam gelung untuk memahami nuansa operasinya. Terdapat peraturan heuristik yang break boleh anda gunakan dengan lebih yakin dalam gelung yang lebih pendek dan dengan lebih berhati-hati dalam gelung yang panjang dan bersarang dalam, kerana ini meningkatkan kemungkinan ralat dan merumitkan pembacaan dan pemahaman kod anda oleh pengaturcara lain. Seperti yang saya tulis di atas, penggunaan sejumlah besar break. yang bertaburan di seluruh kod menunjukkan bahawa pengaturcara tidak memahami sepenuhnya mengapa dia menulis kodnya seperti yang dia lakukan. Mungkin patut dipertimbangkan untuk memfaktorkan semula gelung sedemikian dengan memecahkannya kepada beberapa gelung yang lebih kecil. Cuba berhati-hati apabila menggunakan break label sebagai pengganti goto, kerana ini merumitkan struktur kod. Itu sahaja yang saya ingin beritahu anda hari ini tentang pengendali breakdi java. Saya akan berbesar hati menerima kritikan yang membina, dan saya juga bersedia untuk menulis sambungan tentang pengendali continuedan return, jika anda berminat.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION