Los operadores y las estructuras de control de flujo determinan el orden de ejecución del programa. Java 14 y 21 introdujeron importantes mejoras en switch que conviene conocer.
Operadores
Los operadores más usados:
|
Categoría | Operadores | Ejemplo |
Aritméticos |
|
|
Asignación |
|
|
Comparación |
|
|
Lógicos |
|
|
Ternario |
|
|
Incremento |
|
|
Importante: == compara referencias en objetos (¿apuntan a lo mismo?). Para comparar el contenido de objetos usa .equals():
String a = new String("hola");
String b = new String("hola");
a == b // false (distintas referencias)
a.equals(b) // true (mismo contenido)
if / else if / else
int nota = 75;
String calificacion;
if (nota >= 90) {
calificacion = "Sobresaliente";
} else if (nota >= 70) {
calificacion = "Notable";
} else if (nota >= 60) {
calificacion = "Aprobado";
} else {
calificacion = "Suspenso";
}
switch (clásico vs. moderno)
El switch clásico de Java tenía el problema del fall-through (si olvidas break, la ejecución cae al siguiente case). Desde Java 14, el switch expression es más seguro y expresivo:
// Switch clásico (aún válido, propenso a errores)
int dia = 3;
String nombre;
switch (dia) {
case 1: nombre = "Lunes"; break;
case 2: nombre = "Martes"; break;
case 3: nombre = "Miércoles"; break;
default: nombre = "Otro"; break;
}
// Switch expression (Java 14+) — sin fall-through, más limpio
String nombreModerno = switch (dia) {
case 1 -> "Lunes";
case 2 -> "Martes";
case 3 -> "Miércoles";
case 4 -> "Jueves";
case 5 -> "Viernes";
default -> "Fin de semana";
};
Bucles: for, while, do-while
// for clásico
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
// for-each (para arrays y colecciones)
int[] numeros = {1, 2, 3, 4, 5};
for (int n : numeros) {
System.out.println(n);
}
// while
int contador = 0;
while (contador < 5) {
System.out.println(contador);
contador++;
}
// do-while (ejecuta al menos una vez)
int x = 10;
do {
System.out.println(x);
x--;
} while (x > 0);
break, continue y etiquetas
// break: sale del bucle actual
for (int i = 0; i < 10; i++) {
if (i == 5) break;
System.out.println(i); // 0 1 2 3 4
}
// continue: salta a la siguiente iteración
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) continue;
System.out.println(i); // 1 3 5 7 9
}
// Etiquetas para break/continue en bucles anidados
externo:
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (i == 1 && j == 1) break externo;
System.out.println(i + "," + j);
}
}
