"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Compreendendo o Fall-Through em instruções Java Switch-Case

Compreendendo o Fall-Through em instruções Java Switch-Case

Publicado em 31/07/2024
Navegar:799

Understanding Fall-Through in Java Switch-Case Statements

Na programação Java, a instrução switch-case é uma estrutura de controle usada para executar um bloco de código entre muitos com base no valor de uma variável. Pode ser mais eficiente e legível do que usar várias instruções if-else. Um conceito importante a ser entendido ao trabalhar com instruções switch-case é "fall-through".

O que é queda?

O fall-through ocorre quando a execução do código continua de um caso para o outro sem encontrar uma instrução break. Por padrão, após a execução de um bloco case correspondente, o fluxo de controle passará para os blocos case subsequentes até que uma instrução break seja encontrada ou a instrução switch termine.

Sintaxe de uma instrução Switch-Case

Aqui está a sintaxe básica de uma instrução switch-case em Java:

switch (expression) {
    case value1:
        // code block
        break;
    case value2:
        // code block
        break;
    default:
        // default code block
}

Exemplo de queda

Vejamos um exemplo para entender como funciona o fall-through:

int day = 2;
switch (day) {
    case 1:
        System.out.println("Monday");
    case 2:
        System.out.println("Tuesday");
    case 3:
        System.out.println("Wednesday");
    default:
        System.out.println("Other day");
}

Neste exemplo, a saída será:

Tuesday
Wednesday
Other day

Explicação

Quando o dia é igual a 2, o bloco do caso 2 é executado, imprimindo "Terça-feira". Como não há instrução break após o caso 2, a execução continua para o caso 3 e depois para o caso padrão, imprimindo "Quarta-feira" e "Outro dia", respectivamente. Este é um exemplo clássico de comportamento falho.

Prevenindo quedas

Para evitar falhas, você deve encerrar cada caso com uma instrução break:

int day = 2;
switch (day) {
    case 1:
        System.out.println("Monday");
        break;
    case 2:
        System.out.println("Tuesday");
        break;
    case 3:
        System.out.println("Wednesday");
        break;
    default:
        System.out.println("Other day");
        break;
}

Agora, a saída será:

Tuesday

Queda intencional

Às vezes, o fall-through pode ser usado intencionalmente para executar vários casos com o mesmo bloco de código:

int day = 2;
switch (day) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        System.out.println("It's a weekday");
        break;
    case 6:
    case 7:
        System.out.println("It's a weekend");
        break;
    default:
        System.out.println("Invalid day");
}

Neste exemplo, os valores de dia de 1 a 5 resultarão na impressão de "É um dia da semana".

Conclusão

Compreender as falhas nas instruções switch-case é crucial para escrever código Java claro e livre de erros. Embora a falha possa ser útil em determinados cenários, geralmente é uma boa prática usar instruções break para evitar comportamento não intencional.

Nota: Ao contrário do Java, a construção case-when em Ruby não exibe comportamento de falha. Cada cláusula when é independente e a execução não continua automaticamente para as cláusulas when subsequentes sem instruções explícitas.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/thierrychau/understanding-fall-through-in-java-switch-case-statements-17gb?1 Se houver alguma violação, entre em contato com [email protected] para excluir isto
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3