palabra clave case en Java
La palabra clave case en Java se utiliza dentro de una sentencia switch para definir un bloque de código que se ejecuta cuando la expresión del conmutador coincide con un valor específico. Cada etiqueta case debe ser única dentro de la sentencia switch y va seguida de dos puntos.
Utilización
La palabra clave case se utiliza para manejar múltiples condiciones de una manera más legible y eficiente que múltiples sentencias if-else. Es especialmente útil cuando necesitas ejecutar código diferente en función del valor de una variable.
Syntax
switch (expression) {
case value1:
// code block
break;
case value2:
// code block
break;
// more cases...
default:
// default code block
}
expression: La variable o expresión evaluada una vez al principio de la sentencia switch.value1,value2, etc.: Los valores constantes con los que se compara la expresión.break: Termina el bloque de casos actual para evitar que se caiga.default: Opcional; se ejecuta si no coincide ningúncase.
Ejemplos
Ejemplo 1: Uso básico
public class SwitchExample {
public static void main(String[] args) {
int day = 3;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
default:
System.out.println("Invalid day");
}
}
}
En este ejemplo, la sentencia switch evalúa el valor de day. Como day es 3, se ejecuta el bloque de código de case 3, que imprime "miércoles".
Ejemplo 2: Utilizar cadenas en Switch
public class SwitchStringExample {
public static void main(String[] args) {
String fruit = "Apple";
switch (fruit) {
case "Apple":
System.out.println("Apple is red.");
break;
case "Banana":
System.out.println("Banana is yellow.");
break;
case "Orange":
System.out.println("Orange is orange.");
break;
default:
System.out.println("Unknown fruit.");
}
}
}
Este ejemplo demuestra el uso de una sentencia switch con una String. La sentencia switch evalúa el valor de fruit. Como fruit es "Manzana", imprime "Manzana es roja".
Ejemplo 3: Comportamiento Fall-through
public class FallThroughExample {
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1:
System.out.println("One");
case 2:
System.out.println("Two");
case 3:
System.out.println("Three");
break;
default:
System.out.println("Default");
}
}
}
En este ejemplo, la sentencia switch evalúa el valor de num. Como num es 2, imprime "Dos" y luego sigue ejecutando "Tres" porque no hay ninguna sentencia break después de case 2.
Ejemplo 4: Sentencias de conmutación anidadas
public class NestedSwitchExample {
public static void main(String[] args) {
int outer = 1;
int inner = 2;
switch (outer) {
case 1:
switch (inner) {
case 1:
System.out.println("Inner 1");
break;
case 2:
System.out.println("Inner 2");
break;
}
break;
case 2:
System.out.println("Outer 2");
break;
default:
System.out.println("Default Outer");
}
}
}
Este ejemplo demuestra el uso de una sentencia switch anidada. La sentencia externa switch evalúa el valor de outer, mientras que la sentencia interna switch evalúa el valor de inner.
Consejos y buenas prácticas
- Utiliza siempre
break: Utiliza la declaraciónbreakpara evitar el comportamiento "fall-through" a menos que se desee explícitamente. - Caso por defecto: Incluye siempre un caso
defaultpara manejar valores inesperados. - Valores constantes: Asegúrate de que las etiquetas
caseson constantes y únicas dentro de la sentencia switch. - Tipos de datos: Las declaraciones
switchpueden utilizarse con los tiposbyte,short,int,char,Stringyenum. - Simplifica el Código: Utiliza las declaraciones
switchpara simplificar el código que implica múltiples condiciones, haciéndolo más legible y fácil de mantener. - Evita
nullen Switch: Ten cuidado con los valores denullen las expresiones de conmutación para evitarNullPointerException.
switch (expression) {
case constant1:
// code block
break;
case constant2:
// code block
break;
// more cases...
default:
// default code block
}