¿Qué es un Switch Case en Java y cómo usarlo?

Publicado: 2022-03-04

El caso de cambio en Java es una de las muchas declaraciones de Java que le dicen al lenguaje de programación qué hacer. Al igual que las oraciones en el idioma inglés que dan una idea completa del texto e incluyen cláusulas, las declaraciones de Java son comandos que incluyen una o más expresiones que ejecuta el intérprete de Java. En términos más simples, una declaración de Java es una instrucción que explica lo que debería suceder.

Una declaración de Java termina en un punto y coma (;) y le dice a Java que procese las instrucciones hasta ese punto y coma. De forma predeterminada, el intérprete de Java sigue el orden en que se escriben las sentencias y ejecuta una sentencia tras otra. Sin embargo, las declaraciones que controlan el flujo del programa (sentencias de control de flujo), como bucles y condicionales, no siguen el orden predeterminado de ejecución. Este artículo se centra en uno de esos tipos de mecanismos de control de selección: la declaración de caso de cambio de Java .

Tabla de contenido

¿Qué es un caso de cambio en Java?

Java admite tres tipos de sentencias: sentencias de expresión para cambiar los valores de las variables, llamar a métodos y crear objetos, sentencias de declaración para declarar variables y sentencias de flujo de control para determinar el orden de ejecución de las sentencias.

La declaración de cambio de caso de Java es un tipo de declaración de flujo de control que permite que el valor de una expresión o variable cambie el flujo de control de la ejecución del programa a través de una rama multidireccional. A diferencia de las sentencias if-then y if-then-else, la sentencia switch de Java tiene varias rutas de ejecución. Switch case en Java funciona con tipos de datos primitivos short, byte, int y char. A partir de JDK7, el conmutador de Java también se puede usar con la clase String, los tipos enumerados y las clases Wrapper que envuelven tipos de datos primitivos como Byte, Character, Integer y Short.

El cuerpo de una declaración de caso de cambio en Java se llama bloque de cambio. Cada declaración en el bloque de cambio está etiquetada usando uno o más casos o etiquetas predeterminadas. Por lo tanto, la declaración de cambio evalúa su expresión, seguida de la ejecución de todas las declaraciones que siguen a la etiqueta de caso coincidente.

A continuación se muestra la sintaxis de la declaración de cambio de caso:

// declaración de cambio

cambiar (expresión)

{

// sentencias de caso

// los valores deben ser del mismo tipo de expresión

caso valor1:

// Declaraciones

descanso; // el descanso es opcional

valor del caso 2:

// Declaraciones

descanso; // el descanso es opcional

// Podemos tener cualquier número de declaraciones de casos

// a continuación se muestra la declaración predeterminada, utilizada cuando ninguno de los casos es verdadero.

// No se necesita interrupción en el caso predeterminado.

por defecto :

// Declaraciones

}

Ejemplo de la declaración de cambio de Java

El siguiente ejemplo de código Java declara un int llamado "mes" cuyo valor representa uno de los 12 meses del año. El código usa la instrucción switch case para mostrar el nombre del mes según el valor del mes.

Ejemplo de cambio de clase pública {

public static void main(String[] args) {

mes int = 6;

String mesString;

cambiar (mes) {

caso 1: cadenaMes = “Enero”;

descanso;

caso 2: cadenaMes = “Febrero”;

descanso;

caso 3: cadenaMes = “marzo”;

descanso;

caso 4: cadenaMes = “Abril”;

descanso;

caso 5: cadenaMes = “Mayo”;

descanso;

caso 6: cadenaMes = “Junio”;

descanso;

caso 7: cadenaMes = “Julio”;

descanso;

caso 8: cadenaMes = “agosto”;

descanso;

caso 9: cadenaMes = “Septiembre”;

descanso;

caso 10: cadenaMes = “Octubre”;

descanso;

caso 11: cadenaMes = “Noviembre”;

descanso;

caso 12: cadenaMes = “diciembre”;

descanso;

predeterminado: monthString = "Mes no válido";

descanso;

}

System.out.println(mesString);

}

}

Salida: Junio

Propósito de la declaración de interrupción en el caso de cambio de Java

La instrucción break es un aspecto esencial del caso de conmutación de Java que finaliza la instrucción de conmutación adjunta. La sentencia break es necesaria porque sin ella, las sentencias del bloque interruptor no se cumplirían. Por lo tanto, independientemente de la expresión de las etiquetas de casos posteriores, todas las declaraciones posteriores a la etiqueta de caso coincidente se ejecutan secuencialmente hasta que se encuentra una declaración de interrupción.

El siguiente código es un ejemplo para mostrar un bloque de cambio que falla en ausencia de la declaración de ruptura.

clase pública SwitchExampleFallThrough {

public static void main(String[] args) {

java.util.ArrayList<String> futureMonths =

nueva java.util.ArrayList<String>();

mes int = 6;

cambiar (mes) {

caso 1: futureMonths.add(“Enero”);

caso 2: futureMonths.add(“Febrero”);

caso 3: futureMonths.add(“Marzo”);

caso 4: futureMonths.add(“Abril”);

caso 5: futureMonths.add(“Mayo”);

caso 6: futureMonths.add(“Junio”);

caso 7: futureMonths.add(“Julio”);

caso 8: futureMonths.add(“Agosto”);

caso 9: futureMonths.add(“Septiembre”);

caso 10: futureMonths.add(“Octubre”);

caso 11: futureMonths.add(“Noviembre”);

caso 12: futureMonths.add(“Diciembre”);

descanso;

predeterminado: descanso;

}

if (futurosMeses.estáVacío()) {

System.out.println(“Número de mes no válido”);

} demás {

for (String nombreMes : mesesfuturos) {

System.out.println(nombreMes);

}

}

}

}

Producción:

junio

mes de julio

agosto

septiembre

octubre

noviembre

diciembre

El código anterior muestra el mes del año correspondiente al mes entero y los meses que siguen. Aquí, la instrucción break final no tiene ningún propósito porque el flujo se sale de la instrucción switch. El uso de la instrucción break es útil porque hace que el código sea menos propenso a errores y facilita las modificaciones. La sección predeterminada en el código maneja todos los valores no regulados por ninguna de las secciones de casos.

Declaración de cambio de Java con múltiples etiquetas de casos

Las declaraciones de cambio en Java también pueden tener múltiples etiquetas de casos. El siguiente código ilustra lo mismo: aquí se calcula el número de días en un mes particular del año.

clase SwitchMultiple{

public static void main(String[] args) {

mes int = 2;

año int = 2020;

int numDías = 0;

cambiar (mes) {

caso 1: caso 3: caso 5:

caso 7: caso 8: caso 10:

caso 12:

númDías = 31;

descanso;

caso 4: caso 6:

caso 9: caso 11:

númDías = 30;

descanso;

caso 2:

si (((año % 4 == 0) &&

!(año % 100 == 0))

|| (año % 400 == 0))

númDías = 29;

demás

númDías = 28;

descanso;

por defecto:

System.out.println(“Mes inválido.”);

descanso;

}

System.out.println(“Número de días = “

+ númeroDías);

}

}

Producción:

Número de días = 29

Declaraciones anidadas de casos de cambio de Java

Un interruptor anidado es cuando usa un interruptor como parte de la secuencia de declaraciones de un interruptor externo. En este caso, no hay conflicto entre las constantes de caso en el otro conmutador y las del conmutador interno porque una declaración de conmutador define su propio bloque.

El siguiente ejemplo demuestra el uso de sentencias switch-case de Java anidadas :

TestNest de clase pública {

public static void main(String[] args)

{

Rama de cadena = "CSE";

año int = 2;

cambiar (año) {

caso 1:

System.out.println(“Cursos optativos: Álgebra, Inglés avanzado”);

descanso;

caso 2:

interruptor (Rama) // interruptor anidado

{

caso “CSE”:

caso “CCE”:

System.out.println(“Cursos optativos: Big Data, Machine Learning”);

descanso;

caso “CEPE”:

System.out.println(“cursos electivos: Ingeniería de Antenas”);

descanso;

por defecto:

System.out.println(“Cursos optativos: Optimización”);

}

}

}

}

Producción:

Cursos electivos: Big Data, Machine Learning

Uso de cadenas en sentencias switch

A partir de JDK7, puede usar un objeto String en la expresión de una declaración de cambio. La comparación del objeto de cadena en la expresión de la declaración de cambio con las expresiones asociadas de cada etiqueta de caso es como si estuviera usando el método String.equals. Además, la comparación de objetos de cadena en la expresión de declaración de cambio distingue entre mayúsculas y minúsculas.

El siguiente ejemplo de código muestra el tipo de juego según el valor de la cadena denominada "juego".

clase pública StringInSwitchStatementExample {

public static void main(String[] args) {

Juego de cuerdas = “Cricket”;

cambiar (juego) {

estuche “Voleibol”: estuche “Fútbol”: estuche “Cricket”:

System.out.println(“Este es un juego al aire libre”);

descanso;

estuche “Juegos de cartas”: estuche “Ajedrez”: estuche “Rompecabezas”: estuche “Baloncesto de interior”:

System.out.println(“Este es un juego de interior”);

descanso;

por defecto:

System.out.println(“¿Qué juego es?”);

}

}

}

Producción:

Este es un juego al aire libre.

Reglas para recordar al usar sentencias de cambio de Java

Sería mejor si tuviera en cuenta ciertas reglas al usar declaraciones de cambio de Java . A continuación se muestra una lista de los mismos:

  • El valor de un caso y la variable en el conmutador deben tener el mismo tipo de datos.
  • Las declaraciones de cambio de Java no permiten valores de mayúsculas y minúsculas duplicados.
  • Un valor de caso debe ser literal o una constante. No se permiten variables.
  • El uso de la instrucción break dentro del interruptor finaliza una secuencia de instrucciones.
  • La sentencia break es opcional y su omisión continuará la ejecución en el caso subsiguiente.
  • La declaración predeterminada también es opcional y puede ocurrir en cualquier lugar dentro del bloque de cambio. Si no se coloca al final, se debe agregar una declaración de interrupción después de la declaración predeterminada para omitir la ejecución de la siguiente declaración de caso.

camino a seguir

Java tiene una popularidad sin igual entre los programadores y desarrolladores y es uno de los lenguajes de programación más demandados en la actualidad. No hace falta decir que los desarrolladores e ingenieros de software en ciernes que desean mejorar sus habilidades para el mercado laboral en constante evolución necesitan obtener una fortaleza sobre sus habilidades de Java.

La Certificación PG vinculada al trabajo de upGrad en ingeniería de software está especialmente diseñada para los candidatos de primer año y último año que desean aprender a codificar y ubicarse en roles de software de nivel de entrada.

Si se pregunta qué implica el curso en línea de 5 meses, aquí hay algunos aspectos destacados para darle una idea:

  • Obtenga especializaciones MERN Stack y Cloud-Native
  • Aprenda las mejores habilidades como bases de datos Java, DSA, CSS3, HTML5, AWS, MERN, SQL y NoSQL, y más
  • Más de 500 horas de contenido con más de 350 horas de formación práctica
  • Cinco proyectos industriales y más de 50 sesiones en vivo
  • Preparación de prácticas y orientación profesional
  • Foros de discusión y sólida red de pares

Si desea iniciar su viaje hacia una carrera prometedora en ingeniería de software, esta es su oportunidad de aprender de los mejores.

1. ¿Qué es un caso en una declaración de cambio?

Una declaración de cambio en Java permite probar la igualdad de una variable con una lista de valores. Aquí, cada valor se conoce como un caso, y la variable activada se comprueba para cada uno de los casos.

2. ¿Cuáles son las ventajas de una caja de interruptores?

La principal ventaja de las declaraciones de cambio de caso de Java sobre las cascadas if-else tradicionales es que la primera permite a los programadores escribir un código más compacto, claro y legible. Por otro lado, las declaraciones if-else a menudo implican muchas repeticiones de código. Por lo tanto, si queremos cambiar una parte específica del código, tendríamos que hacer cambios en otros lugares. Para evitar este proceso lento y propenso a errores, es más inteligente usar casos de cambio.

3. ¿Cuál es la diferencia entre switch case y if-else?

En el caso de sentencias switch, los casos se ejecutan secuencialmente uno tras otro hasta que se encuentra la palabra clave break o se ejecuta la sentencia predeterminada. Por el contrario, en el caso de declaraciones if-else, el bloque 'if' o 'else' se ejecuta dependiendo de la condición.