Rumah >Java >javaTutorial >Mengapa Penyata Suis Memerlukan Penyata Rehat?

Mengapa Penyata Suis Memerlukan Penyata Rehat?

DDD
DDDasal
2024-10-29 03:55:02873semak imbas

 Why Do Switch Statements Need Break Statements?

Tukar Pernyataan tanpa Putus

Ralat berlaku apabila penyataan suis kekurangan penyataan putus antara kes. Pertimbangkan coretan kod berikut:

switch (x) {

    case 0:
        // code

    case 1:
        // code

    case 2:
        // code
}

Penjelasan

Pernyataan suis Java memerlukan pernyataan putus untuk mengasingkan kes. Tanpa rehat, kod dalam kes berikutnya dilaksanakan walaupun keadaan sepadan dengan kes sebelumnya. Dalam contoh di atas, jika x ialah 1, kedua-dua kes 1 dan 2 akan dilaksanakan.

Tingkah laku ini biasanya tidak disengajakan dan boleh membawa kepada logik program yang salah. Findbugs mengenal pasti kemungkinan ralat ini dan membenderakannya sebagai amaran.

Penggunaan

Pernyataan Break digunakan untuk menamatkan pelaksanaan kes dan mengelakkan kod daripada jatuh ke yang berikutnya kes. Kod berikut adalah betul dari segi tatabahasa dan hanya akan melaksanakan kod untuk kes yang sepadan:

switch (foo) {
    case 0:
        doSomething();
        break;
    case 1:
        doSomethingElse();
        break;
    default:
        doSomeOtherThing();
        break;
}

Pengecualian

Dalam senario tertentu, mungkin wajar untuk membenarkan secara sengaja kod untuk jatuh melalui kes berikutnya. Contohnya,

switch (foo) {
    case 0:
    case 1:
        doSomething();
        break;
    case 2:
        doSomethingElse();
        break;
    default:
        doSomeOtherThing();
        break;
}

Dalam kes ini, doSomething() akan dilaksanakan jika foo adalah sama ada 0 atau 1. Ini ialah corak biasa yang dikenali sebagai "fall-through" dan biasanya dianggap boleh diterima apabila tiada kod muncul di antara kes (cth., kes 1 dan kes 2). Kebanyakan alat analisis tidak akan membenderakan kes yang gagal sebagai ralat dalam situasi ini.

Atas ialah kandungan terperinci Mengapa Penyata Suis Memerlukan Penyata Rehat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn