Objetivos
- 2.1 Escribir código usando sentencias if y switch e identificar tipos de argumentos legales para estas sentencias.
A.- Sentencias de decisión (2.1)
if Es utilizado para evaluar una expresión que deba retornar un booleano (true o false) :
if (expresion que retorna booleano) {
sentencia o bloque;
};
if (expresion que retorna booleano) {
sentencia o bloque;
} else if (expresion que retorna booleano) {
sentencia o bloque;
} else {
sentencia o bloque;
}
if Requiere una expresión que retorna boleano y no
realiza conversiones o casting de valores numéricos :
int x = 0;
if (x) System.out.println(x);
if (x != 0) System.out.println(x);
boolean b = true;
if (b=false) System.out.println("ok");
if (b==false) System.out.println("ok");
switch Es utilizado para evaluar una expresión
de tipo int o cuyo valor retornado sea convertible a int:
switch ( expresion que retorna int, short, byte o char) {
case constant1:
sentencia o bloque;
break;
case constant1:
sentencia o bloque;
break;
default:
sentencia o bloque;
break;
}
switch El dato en la expresión a evaluar
es promovido si es byte, short o char ... son válidas las constantes o métodos que
retornen cualquiera de estos tipos también. Pero en los case no son válidos
los métodos ni variables :
final char O_CHAR = 'A';
final int O_INT = 77;
final short O_SHORT = (short) 22;
final byte O_BYTE = (byte) 5;
final int O_INT2 = entero();
{
int x = 0;
switch (x) {
case O_CHAR:
System.out.println("ok");
break;
case O_INT:
System.out.println("ok");
break;
case x:
System.out.println("ok");
break;
case O_INT2:
System.out.println("ok");
break;
case entero():
System.out.println("ok");
break;
case O_SHORT:
System.out.println("ok");
break;
case O_BYTE:
System.out.println("ok");
break;
}
}
static int entero() {
return 61;
}
}
En el switch dos case no pueden evaluar
el mismo valor de decisión, pues no compila.
En el switch No es obligatorio el default
y si se escribe no importa el orden dentro de los case, igual apenas llegue la ejecución a
evaluar el se ejecutará.
En el switch Tampoco son obligatorios los break, pero si a un bloque no se le coloca el break Java seguirá
EJECUTANDO las siguientes sentencias SIN EVALUAR LOS CASE:
int a = 1;
switch ( a ) {
case 1:
System.out.println("Es 1");
break;
case 2:
System.out.println("Es 2");
break;
case 3:
System.out.println("Es 3");
break;
}
En el switch los casedeben evaluar el mismo
tipo de dato pasado como parámetro a la expresión a evaluar, es decir :
byte g = 2;
switch ( g ) {
case 23:
System.out.println("23");
break;
case 128:
System.out.println("128");
break;
}