El primero de los dos que especifica es un lazo clásico C for
. Esto le da al programador el control sobre los criterios de iteración y permite tres operaciones: la inicialización; la prueba de bucle; la expresión de incremento A pesar de que se utiliza a menudo para repetir de forma incremental para un número determinado de intentos, como en el ejemplo yor:
for (int i=0; i < N : i++)
Hay muchos más ejemplos en código donde el for
era uso para iterar sobre colecciones:
for (Iterator iter = myList.iterator(); iter.hasNext();)
Para alentar la repetición del segundo tipo (donde a menudo no se utilizaba la tercera cláusula), y para complementar el Generics introducido en Java 1.5, se introdujo el segundo de sus dos ejemplos: el bucle forzado mejorado o el for-each loop
.
El segundo se usa con matrices y colecciones genéricas. See this documentation. Le permite iterar sobre una colección genérica, donde conoce el tipo de Collection
, sin tener que convertir el resultado del Iterator.next()
en un tipo conocido.
Compare:
for(Iterator iter = myList.iterator; iter.hasNext() ;) {
String myStr = (String) iter.next();
//...do something with myStr
}
con
for (String myStr : myList) {
//...do something with myStr
}
Este 'nuevo estilo' de lazo se puede utilizar con matrices así:
String[] strArray= ...
for (String myStr : strArray) {
//...do something with myStr
}
o matriz. O colección regular si su variable es de tipo Objeto :-) – ChssPly76
No es exclusivo de colecciones genéricas. –
@pavel: estoy dispuesto a hacer de esto una respuesta wiki si quieres agregar más. – akf