1. El operador de opción múltiple:switch
Java tiene otro operador interesante que heredó de su abuelo (C++). Estamos hablando de la switch
declaración. También podríamos llamarlo un operador de opción múltiple. Parece un poco engorroso:
switch(expression)
{
case value1: code1;
case value2: code2;
case value3: code3;
}
Una expresión o variable se indica entre paréntesis. Si el valor de la expresión es value1
, la máquina Java comienza a ejecutarse code1
. Si la expresión es igual a value2
, la ejecución salta a code2
. Si la expresión es igual a value3
, entonces code3
se ejecuta.
Ejemplo:
Código | Salida de consola |
---|---|
|
|
2. break
declaración enswitch
Una característica importante de una switch
declaración es que el programa simplemente salta a la línea requerida (al bloque de código requerido) y luego ejecuta todos los bloques de código hasta el final del switch
. No solo el bloque de código correspondiente al valor en switch
, sino todos los bloques de código hasta el final de switch
.
Ejemplo:
Código | Salida de consola |
---|---|
|
|
Dada una temperatura de 36, el programa ingresará la switch
declaración, saltará y ejecutará el primer bloque de código (el primer caso), y luego ejecutará alegremente el resto de los bloques de código.
Si desea ejecutar solo un bloque de código , el bloque de código asociado con el caso coincidente, debe finalizar el bloque con una break
declaración;
Ejemplo:
Código | Salida de consola |
---|---|
|
|
Puede omitir the break
en el último caso de la switch
sentencia, ya que ese bloque es el último con o sin sentencia break.
3. Acción predeterminada:default
Otro punto importante. ¿Qué sucede si ninguno de los casos enumerados en el switch
coincide con la expresión entre paréntesis?
Si no se encuentra un caso coincidente, se omite el resto de la switch
instrucción y el programa continuará ejecutándose después de la llave que finaliza la switch
instrucción.
Dicho esto, también puede hacer que una switch
declaración se comporte como la rama else en una if-else
declaración. Para hacer esto, use la default
palabra clave.
Si ninguno de los case
s en el switch
bloque coincide con el valor de la expresión y switch
tiene un default
bloque, se ejecutará el bloque predeterminado. Ejemplo:
Código | Salida de consola |
---|---|
|
|
4. Comparar switch
yif-else
La switch
declaración es algo similar a una if-else
declaración, solo que más complicada.
Siempre puede reescribir el código de una switch
declaración como if
declaraciones múltiples. Ejemplo:
Código con interruptor | Codificar con if-else |
---|---|
|
|
El código de la izquierda funcionará exactamente igual que el código de la derecha.
Es preferible una cadena de if-else
declaraciones múltiples cuando una if
declaración contiene varias expresiones complejas en cada caso por separado.
5. ¿Qué expresiones se pueden utilizar en un switch
enunciado?
No todos los tipos se pueden usar como case
etiquetas en una switch
declaración. Puede utilizar literales de los siguientes tipos:
- tipos enteros:
byte
,short
,int
,long
char
String
- cualquier
enum
tipo
No puede utilizar ningún otro tipo como etiquetas de casos.
Ejemplo de uso de un enum
dentro de una switch
declaración:
Day day = Day.MONDAY;
switch (day)
{
case MONDAY:
System.out.println("Monday");
break;
case TUESDAY:
System.out.println("Tuesday");
break;
case WEDNESDAY:
System.out.println("Wednesday");
break;
case THURSDAY:
System.out.println("Thursday");
break;
case FRIDAY:
System.out.println("Friday");
break;
case SATURDAY:
System.out.println("Saturday");
break;
case SUNDAY:
System.out.println("Sunday");
break;
}
Nota: si usa una instrucción enum
dentro de una switch
declaración, no necesita escribir el nombre de la clase delante de cada valor en las case
etiquetas. Basta con escribir el valor.
GO TO FULL VERSION