Sentencia For clásica y mejorada (o enhanced)
La sentencia for es similar a while, pero está más orientada a trabajar con arrays o colecciones. Hoy existen dos versiones de sentencia for; la clásica (la vieja) y otra conocida como enhanced.
Sentencia For clásica
Está basada en el uso de una variable contador, que suelen tomar los nombres “i” o “j” y es llamada índice.
Formato:
for(<inicialización>; <condición>; <modificación>) <instrucción>
Usando bloque de instrucciones sería:
for(<inicialización>; <condición>; <modificación>) { <secuencia de instrucciones separadas por punto y coma> }
-
<inicialización>; se ejecuta una sola vez antes de empezar a ciclar
-
<condición>; se evalúa antes de cada repetición. Si es falsa deja de repetir
-
<modificación>; se ejecuta después de la repetición y antes de evaluar la condición.
Normalmente la <inicialización>, <condición> y <modificación> trabajan sobre el índice. La <inicialización> suele iniciar el índice, la <condición> controla si el índice está en rango y la <modificación> incrementa o decrementa el índice.
Veamos un ejemplo para entenderlo.
Ejemplo de cómo imprimir de cero a nueve
for (int i = 0; i < 10; i++) System.out.println(i);
Sigamos la ejecución:
-
El índice i se inicializa en cero.
-
Se evalúa la condición (0<10) y como es verdadero se ejecuta System.out.println(i). Se imprime un creo en la consola
-
Se ejecuta i++ lo que deja a i valiendo 1.
-
Se vuelve a evaluar la condición (1<10)
-
…
-
Al final de la repetición 10 al ejecutar i++ i pasa a valer 10 y 10<10 da falso y termina la ejecución del for.
Este ejemplo imprime los números del 0 al 9 por la consola. Podemos hacer exactamente lo mismo usando while:
int i = 0; // <inicialización> while (i < 10) { // <condición> System.out.println(i); i++; // <modificación> }
Ejemplo conteo regresivo de diez a cero
En este ejemplo, iniciamos el índice en 10 y lo decrementamos en uno en cada repetición.
La condición de corte es i >= 0, por lo que repetirá hasta cero incluido.
for (int i = 10; i >= 0; i--) System.out.println(i);
Ejemplo imprimir un array
La sentencia for está históricamente relacionada con el manejo de arrays. Aquí podemos ver un ejemplo simple donde imprimimos el contenido del array numbers.
int[] numbers = { 34, 65, 23, 97, 23, 78, 33 }; for (int i = 0; i < numbers.length; i++) { System.out.print(numbers[i] + " "); }
Sentencia for enhanced
Este formato de sentencia está especialmente diseñado para recorrer arrays o colecciones de objetos sin usar un índice. Veamos su formato:
for(<declaración de item> : <colección de ítems>) <instrucción>
Usando bloque de instrucciones sería:
for(<declaración de item> : <colección de ítems>) { <secuencia de instrucciones separadas por punto y coma> }
-
<declaración de item>; aquí se declara una variable que pueda contener un item del array o colección. Ej: si es un array int[], la declaración será de una variable int.
-
<colección de ítems> este es un array o una colección de objetos. Veremos más adelante las colecciones de objetos existentes en Java.
Ejemplo imprimir un array usando for enhanced
int[] numbers = { 34, 65, 23, 97, 23, 78, 33 }; for (int item : numbers) { System.out.print(item + " "); }
Este código es más claro. La variable item toma el valor de cada elemento del array numbers. No es necesaria una variable índice.
Resumen
En los siguientes tutoriales veremos ejemplos de cómo usar la sentencia for en sus dos variantes.