Menu

Bucle for en Java: sintaxis, ejemplos y el for-each mejorado

El bucle for de Java explicado: el clásico bucle de tres partes, recorrer arrays y listas, bucles anidados, break y continue, y el for-each mejorado.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

El clásico bucle for de tres partes

Un bucle for repite un bloque un número controlado de veces. La forma de Java mete tres cosas entre los paréntesis, separadas por punto y coma:

Las tres partes se ejecutan con un ritmo fijo:

  1. Inicialización (int i = 0) - se ejecuta una vez, antes que nada.
  2. Condición (i < 5) - se comprueba antes de cada pasada; el bucle se detiene cuando es falsa.
  3. Actualización (i++) - se ejecuta después de cada pasada, antes de volver a comprobar la condición.

Así que esto imprime de i = 0 hasta i = 4. El contador i está acotado al bucle: no existe después de la llave de cierre.

Contar hacia arriba, hacia abajo y por pasos

Las tres partes te dan control total sobre el contador:

i-- decrementa, i += 5 salta en pasos de cinco. La condición decide la parada según la dirección: usa > cuando cuentas hacia abajo, y < o <= cuando cuentas hacia arriba.

Recorrer un array

Un bucle contado encaja de forma natural con un array, usando .length como límite e i como índice:

Fíjate en que colors.length es un campo sin paréntesis: los arrays son especiales en eso. Una List usa en cambio list.size(). La condición i < colors.length es correcta: los índices van de 0 a length - 1, así que usar < (y no <=) evita un error de fuera de límites.

El bucle for-each mejorado

Cuando solo necesitas cada elemento y nunca el índice, el for mejorado es más limpio y más difícil de equivocar: no hay contador con el que cometer un error por uno:

Lee for (String color : colors) como "para cada color en colors". Funciona con arrays y con cualquier cosa iterable. El compromiso: no tienes índice y no puedes añadir ni quitar elementos de la colección mientras la recorres (eso lanza ConcurrentModificationException). Recurre al bucle contado cuando necesites cualquiera de las dos cosas.

Bucles anidados

Un bucle dentro de otro bucle: útil para cuadrículas, tablas y emparejamientos. El bucle interno se ejecuta por completo en cada pasada del externo:

Esto imprime una cuadrícula de multiplicación de 3x3. Dales a los contadores nombres con sentido (row, col) en lugar de i, j cuando el anidamiento se vuelve profundo: te ahorra confundir cuál es cuál.

break y continue

break sale del bucle de inmediato. continue se salta el resto de la pasada actual y salta al paso de actualización:

Esto imprime 1 3 5 7. continue se salta los pares; break termina el bucle en cuanto i superaría 7. En bucles anidados, ambos afectan solo al bucle más interno, salvo que uses un break etiquetado.

Cuidado con los bucles infinitos

Si la condición nunca se vuelve falsa, el bucle se ejecuta para siempre. La causa habitual es olvidar la actualización o mover el contador en la dirección equivocada:

for (int i = 0; i < 5; i--) {   // i solo disminuye -> nunca llega a 5
    System.out.println(i);
}

Un bucle infinito intencionado omite las tres partes -for (;;) { ... }- y depende de un break interior para detenerse. Úsalo con moderación; un while (true) suele leerse con más claridad.

Siguiente: bucles while

El bucle for brilla cuando conoces el contador de antemano. Cuando quieres iterar hasta que cambie alguna condición -y no tienes un contador claro-, el bucle while encaja mejor. Esa es la siguiente página.

Preguntas frecuentes

¿Cuál es la sintaxis de un bucle for en Java?

Un bucle for de Java tiene tres partes entre paréntesis separadas por punto y coma: for (inicialización; condición; actualización) { ... }. Por ejemplo, for (int i = 0; i < 5; i++) { ... } arranca i en 0, ejecuta el cuerpo mientras i < 5 y suma 1 a i después de cada pasada. Las tres partes son opcionales.

¿Cuál es la diferencia entre un bucle for y un bucle for-each en Java?

El bucle for clásico usa un contador explícito, así que tú controlas el índice y la dirección: ideal cuando necesitas el índice o quieres saltarte elementos. El for-each mejorado, for (Tipo elemento : colección), recorre todos los elementos en orden sin índice: más limpio cuando solo necesitas cada elemento y nunca la posición. El for-each no puede modificar la estructura de la colección mientras itera.

¿Cómo se recorre un array en Java?

Indéxalo con un bucle contado -for (int i = 0; i < arr.length; i++) { usa arr[i]; }- o, cuando no necesites el índice, usa un for-each: for (int x : arr) { usa x; }. Los arrays exponen su tamaño mediante el campo .length (sin paréntesis), mientras que las listas usan .size().

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR