Introducción
Las sentencias switch en Java son una forma eficiente de manejar múltiples condiciones basadas en el valor de una variable. A diferencia de las sentencias if-else, que evalúan condiciones booleanas, switch evalúa una sola expresión y ejecuta el bloque de código correspondiente al valor de esa expresión.
Sintaxis Básica
La estructura básica de una sentencia switch es la siguiente:
switch (expresión) {
case valor1:
// Bloque de código para valor1
break;
case valor2:
// Bloque de código para valor2
break;
// Puedes tener tantos casos como necesites
default:
// Bloque de código si ninguno de los casos anteriores coincide
break;
}Componentes Clave
- expresión: La expresión que se evalúa una vez y cuyo valor se compara con los valores de los casos.
- case valor: Cada caso contiene un valor que se compara con la expresión. Si coinciden, se ejecuta el bloque de código asociado.
- break: Termina la ejecución del bloque de código dentro del caso. Si se omite, la ejecución continuará en el siguiente caso (comportamiento conocido como "fall-through").
- default: (Opcional) Se ejecuta si ninguno de los casos coincide con la expresión.
Ejemplo Práctico
Vamos a ver un ejemplo práctico para entender mejor cómo funciona switch en Java.
Ejemplo: Días de la Semana
public class SwitchExample {
public static void main(String[] args) {
int day = 3;
String dayName;
switch (day) {
case 1:
dayName = "Lunes";
break;
case 2:
dayName = "Martes";
break;
case 3:
dayName = "Miércoles";
break;
case 4:
dayName = "Jueves";
break;
case 5:
dayName = "Viernes";
break;
case 6:
dayName = "Sábado";
break;
case 7:
dayName = "Domingo";
break;
default:
dayName = "Día inválido";
break;
}
System.out.println("El día es: " + dayName);
}
}Explicación del Código
- Declaración de Variables: Se declara una variable
daycon un valor de 3 y una variabledayNamepara almacenar el nombre del día. - Sentencia
switch: La expresióndayse evalúa y se compara con cada caso. - Casos: Cada caso representa un día de la semana. Si
dayes 3, se ejecuta el bloque de código correspondiente al caso 3, asignando "Miércoles" adayName. - Break: Cada caso termina con una sentencia
breakpara evitar el "fall-through". - Default: Si
dayno coincide con ninguno de los casos, se ejecuta el bloquedefault, asignando "Día inválido" adayName. - Salida: Finalmente, se imprime el nombre del día.
Ejercicio Práctico
Ejercicio 1: Meses del Año
Escribe un programa que use una sentencia switch para imprimir el nombre de un mes basado en un número del 1 al 12.
Solución
public class MonthExample {
public static void main(String[] args) {
int month = 5;
String monthName;
switch (month) {
case 1:
monthName = "Enero";
break;
case 2:
monthName = "Febrero";
break;
case 3:
monthName = "Marzo";
break;
case 4:
monthName = "Abril";
break;
case 5:
monthName = "Mayo";
break;
case 6:
monthName = "Junio";
break;
case 7:
monthName = "Julio";
break;
case 8:
monthName = "Agosto";
break;
case 9:
monthName = "Septiembre";
break;
case 10:
monthName = "Octubre";
break;
case 11:
monthName = "Noviembre";
break;
case 12:
monthName = "Diciembre";
break;
default:
monthName = "Mes inválido";
break;
}
System.out.println("El mes es: " + monthName);
}
}Retroalimentación y Consejos
- Uso del
break: No olvides incluir la sentenciabreaken cada caso para evitar la ejecución no deseada de múltiples bloques de código. - Default: Siempre es una buena práctica incluir un caso
defaultpara manejar valores inesperados. - Tipos de Datos: A partir de Java 7,
switchtambién puede trabajar con cadenas (String), lo que puede ser útil en muchos escenarios.
Conclusión
Las sentencias switch son una herramienta poderosa para manejar múltiples condiciones de manera clara y eficiente. Asegúrate de entender bien su sintaxis y comportamiento para utilizarlas correctamente en tus programas. En el próximo tema, exploraremos el uso de break y continue en bucles, lo que te permitirá controlar el flujo de tus programas de manera más precisa.
Curso de Programación en Java
Módulo 1: Introducción a Java
- Introducción a Java
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
- Operadores
Módulo 2: Flujo de Control
Módulo 3: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Métodos
- Constructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Programación Orientada a Objetos Avanzada
Módulo 5: Estructuras de Datos y Colecciones
Módulo 6: Manejo de Excepciones
- Introducción a las Excepciones
- Bloque Try-Catch
- Throw y Throws
- Excepciones Personalizadas
- Bloque Finally
Módulo 7: Entrada/Salida de Archivos
- Lectura de Archivos
- Escritura de Archivos
- Flujos de Archivos
- BufferedReader y BufferedWriter
- Serialización
Módulo 8: Multihilo y Concurrencia
- Introducción al Multihilo
- Creación de Hilos
- Ciclo de Vida de un Hilo
- Sincronización
- Utilidades de Concurrencia
Módulo 9: Redes
- Introducción a las Redes
- Sockets
- ServerSocket
- DatagramSocket y DatagramPacket
- URL y HttpURLConnection
