Ambos permiten evaluar múltiples condiciones, pero funcionan de manera diferente:
else if - Condiciones mutuamente excluyentes
Solo se ejecuta UNA opción. Cuando encuentra una condición verdadera, ignora el resto.
public class EjemploElseIf {
public static void main(String[] args) {
int nota = 85;
if (nota >= 90) {
System.out.println("Excelente");
} else if (nota >= 80) {
System.out.println("Muy bien");
} else if (nota >= 70) {
System.out.println("Bien");
} else {
System.out.println("Necesitas mejorar");
}
}
}
Resultado: Muy bien
Solo imprime UNA opción, aunque 85 también es >= 70.
if anidados - Condiciones independientes dentro de otras
Evalúa condiciones una dentro de otra. Cada if interno solo se evalúa si el externo es verdadero.
public class EjemploIfAnidados {
public static void main(String[] args) {
boolean tieneLicencia = true;
int edad = 20;
if (tieneLicencia) {
System.out.println("Tiene licencia");
if (edad >= 18) {
System.out.println("Puede conducir solo");
} else {
System.out.println("Debe ir acompañado");
}
}
}
}
Comparación Visual
else if: (una sola opción)
¿nota >= 90? → NO
¿nota >= 80? → SÍ → "Muy bien" → SE DETIENE
¿nota >= 70? → No se evalúa
if anidados:(condiciones dentro de otras)
¿tieneLicencia? → SÍ → "Tiene licencia"
└─ ¿edad >= 18? → SÍ → "Puede conducir solo"
Ejemplo donde se ve la diferencia clara
Con else if:
int numero = 10;
if (numero > 5) {
System.out.println("Mayor que 5");
} else if (numero > 0) {
System.out.println("Mayor que 0");
}
Resultado: Mayor que 5 (solo uno)
Con if independientes (no anidados):
int numero = 10;
if (numero > 5) {
System.out.println("Mayor que 5");
}
if (numero > 0) {
System.out.println("Mayor que 0");
}
Resultado:
Mayor que 5
Mayor que 0
(ambos se ejecutan porque son independientes)
¿Cuándo usar cada uno?
- else if: Cuando solo quieres que se ejecute UNA opción (calificaciones, menús, categorías)
- if anidados: Cuando necesitas verificar condiciones adicionales DENTRO de otra condición (permisos, validaciones por niveles)