Maison >Java >javaDidacticiel >Pourquoi les instructions Switch ont-elles besoin d'instructions Break ?

Pourquoi les instructions Switch ont-elles besoin d'instructions Break ?

DDD
DDDoriginal
2024-10-29 03:55:02865parcourir

 Why Do Switch Statements Need Break Statements?

Instructions Switch sans interruption

Une erreur se produit lorsqu'une instruction switch manque d'instructions break entre les cas. Considérez l'extrait de code suivant :

switch (x) {

    case 0:
        // code

    case 1:
        // code

    case 2:
        // code
}

Explication

L'instruction switch de Java nécessite des instructions break pour séparer les cas. Sans interruption, le code des cas suivants est exécuté même lorsque la condition correspond à un cas précédent. Dans l'exemple ci-dessus, si x vaut 1, les deux cas 1 et 2 seront exécutés.

Ce comportement est généralement involontaire et peut conduire à une logique de programme incorrecte. Findbugs identifie cette erreur potentielle et la signale comme un avertissement.

Usage

Les instructions Break sont utilisées pour terminer l'exécution d'un cas et empêcher le code de passer aux suivants. cas. Le code suivant est grammaticalement correct et n'exécutera que le code correspondant au cas correspondant :

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

Exception

Dans certains scénarios, il peut être souhaitable d'autoriser intentionnellement code pour passer aux cas suivants. Par exemple,

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

Dans ce cas, doSomething() sera exécuté si foo vaut 0 ou 1. Il s'agit d'un modèle courant connu sous le nom de « fall-through » et est généralement considéré comme acceptable lorsqu'aucun code apparaît entre les cas (par exemple, cas 1 et cas 2). La plupart des outils d'analyse ne signaleront pas les cas d'échec comme des erreurs dans ces situations.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn