4
respostas

Estrutura "switch" no Java

class Programa{
    public static void main (String [] args){

        int numero = 10;

        switch (numero){
            case 1:
                System.out.println("Dez");
                break;
            case 2:
                System.out.println("Numero muito grande");
                break;

        }

    }

Minha duvida é, como a estrutura do switch consegue entender um valor inteiro na comparação com uma String? Obs.: Este exemplo foi apresentado no videdo 1, Aula 2 do curso Java I.

4 respostas

Olá Jose, tudo bem ?

Então não é muito diferente :


public void teste(String texto){ 

    switch(texto){

        case "ABC":
            //faz algo
            break;

        case "DEF":
            //faz outra coisa
            break;

        default:
            //caso não for nenhum desses casos


    }
}

Espero ter ajudado !

Continua obscuro para mim.:(

Por trás dos panos, o java fará comparação se é o mesmo conteúdo, fazendo referência de memória.

Olá José o switch ...case pega o valor que está sendo passado no switch e compara com cada um dos casos que estão em sua estrutura.

No caso do código que você apresentou está sendo passado o número no switch , como ele é um inteiro os seus cases são todos inteiros

class Programa{
    public static void main (String [] args){

        int numero = 10;

        switch (numero){ // switch(10)
            case 1: // caso o número passado for 1
                System.out.println("Dez");
                break;
            case 2: // caso o número passado for 2
                System.out.println("Numero muito grande");
                break;

            // Como o número passado é 10, nenhum dos cases são executados.
        }

    }

no seu código ele vai verificar se o número é 1, como vocês está passando o valor 10 ele vai para o próximo passo e vai verificar se o valor passado é 2, como também não é ele vai para o próximo, e como não há próximo nem default o switch é finalizado.

Então se você passa no switch um inteiro, os cases terão que ter inteiros também, quando você passa uma String os valores do case também terão que ser Strings, igual está no exemplo do Matheus.

Espero ter ajudado.