W3docs

Java if, else y else if

Controla el flujo en Java con if, else if y else, y aprende a anidar condiciones de forma clara y ordenada.

Un programa que siempre ejecuta la misma secuencia de sentencias no es muy útil. if es la forma que tiene Java de hacer una pregunta y elegir qué hacer a continuación. Junto con else if y else, forma la base de cada decisión que tu código tomará alguna vez.

El if básico

if (condition) {
  // runs only when condition is true
}

La condición debe ser una expresión boolean — no hay valores truthy/falsy como en JavaScript o Python. if (1) no compila; if (count > 0) sí.

int age = 20;

if (age >= 18) {
  System.out.println("You can vote.");
}

Añadiendo un else

else proporciona la rama alternativa — lo que se ejecuta cuando la condición es false:

int age = 16;

if (age >= 18) {
  System.out.println("You can vote.");
} else {
  System.out.println("Too young to vote.");
}

Exactamente una de las dos ramas se ejecuta. No hay caída al siguiente caso.

Encadenando con else if

Para más de dos resultados, encadena else if. Java comprueba cada condición de arriba a abajo y ejecuta la primera rama cuya condición sea verdadera; el resto se omite:

int score = 72;

if (score >= 90) {
  System.out.println("A");
} else if (score >= 80) {
  System.out.println("B");
} else if (score >= 70) {
  System.out.println("C");
} else {
  System.out.println("F");
}

El orden importa. Si colocas la condición más permisiva primero, absorberá todos los casos siguientes. El ejemplo anterior imprime C porque score >= 70 es la primera coincidencia — aunque score >= 60 también sería verdadera si se comprobara.

Las llaves son opcionales — pero úsalas

Java permite omitir las llaves cuando una rama es una sola sentencia:

if (loggedIn)
  showDashboard();
else
  showLogin();

No lo hagas. Usa siempre las llaves. Las dos líneas siguientes parecen iguales pero se comportan de forma diferente:

if (loggedIn)
  showDashboard();
  logActivity();        // ALWAYS runs — not part of the if!

if (loggedIn) {
  showDashboard();
  logActivity();        // both inside the if
}

El coste de {} son dos caracteres; el coste del error es tu fin de semana.

Expresiones booleanas dentro de if

La condición puede ser cualquier cosa que evalúe a boolean:

if (x > 0 && x < 100) { ... }
if (name.equals("admin")) { ... }
if (!list.isEmpty()) { ... }
if (user != null && user.isActive()) { ... }

Ten en cuenta que if es una sentencia, no una expresión: realiza una acción pero no produce un valor por sí misma, por lo que no puedes escribir int x = if (...). Para la versión que produce un valor, recurre al Operador Ternario.

El último patrón — comprobar null primero y luego llamar a un método — usa la evaluación de cortocircuito. Si user es null, user.isActive() nunca se invoca. Consulta Operadores Lógicos para &&, || y !, y Operadores de Comparación para >, == y similares.

Anidando sentencias if

Puedes poner un if dentro de otro if. A veces es la forma más clara de expresar una condición:

if (user != null) {
  if (user.isAdmin()) {
    System.out.println("Welcome, admin.");
  } else {
    System.out.println("Welcome, user.");
  }
} else {
  System.out.println("Please log in.");
}

Pero el anidamiento profundo resulta difícil de leer. Los retornos tempranos suelen solucionar esto:

if (user == null) {
  System.out.println("Please log in.");
  return;
}
if (user.isAdmin()) {
  System.out.println("Welcome, admin.");
  return;
}
System.out.println("Welcome, user.");

Menos indentación, más fácil de seguir.

Error común: = en lugar de ==

Los principiantes que vienen de otros lenguajes a veces escriben:

if (x = 5) { ... }   // compile error

= es asignación, == es comparación. A diferencia de C, Java rechaza esto en tiempo de compilación a menos que la variable sea un boolean — porque el resultado de int x = 5 es un int, no un boolean. Es un pequeño favor que el sistema de tipos de Java te da de forma gratuita.

Un ejemplo práctico

La cadena else if que aparece a continuación convierte puntuaciones numéricas en letras de calificación. Ejecútala y confirma la salida:

java— editable, runs on the server

Imprime:

95 -> A
82 -> B
71 -> C
68 -> D
45 -> F

Cuándo usar switch en su lugar

Una larga cadena else if que comprueba una variable contra una lista de valores fijos suele ser más clara como una sentencia switch. Usa if/else if cuando las ramas comprueban expresiones diferentes o usan rangos (como el ejemplo de calificaciones anterior); usa switch cuando comparas un único valor con varias constantes.

Qué sigue

Para asignaciones condicionales de una sola línea, el Operador Ternario suele ser más legible que un if/else completo.

Práctica

Práctica
¿Qué se imprime cuando score es 85?
¿Qué se imprime cuando score es 85?
Was this page helpful?