2011-04-15 17 views
30

que estaba buscando dentro de la Clase AtomicInteger y me encontré con el siguiente método:¿Qué significan dos puntos y comas en Java for loop?

/** 
* Atomically increments by one the current value. 
* 
* @return the previous value 
*/ 
public final int getAndIncrement() { 
    for (;;) { 
     int current = get(); 
     int next = current + 1; 
     if (compareAndSet(current, next)) 
      return current; 
    } 
} 

Puede alguien explicar lo for(;;) medios?

Respuesta

48

Es equivalente a while(true).

A para-loop tiene tres elementos:

  • inicializador
  • condición (o expresión de terminación)
  • expresión de incremento

for(;;) no está fijando cualquiera de ellos, lo que es una ciclo infinito.

Referencia: The for statement

+3

Cabe señalar que tradicionalmente 'for (;;)' es el ciclo infinito canónico, particularmente en C. –

3

Es simplemente otra variación de un ciclo infinito, al igual que while(true){}.

9

Es lo mismo que

while(true) { 
    //do something 
} 

... sólo un poco menos clara.
Observe que el ciclo saldrá si compareAndSet(current, next) se evaluará como true.

+2

menos claro, pero sigue siendo el bucle sin fin canónico. –

+0

Eso es cierto (+1), es canónico, pero menos claro. ;) –

2

Eso es un bucle para siempre. es solo un bucle sin condiciones definidas para estallar.

2

Es un bucle infinito, como while(true).

29

Lo dejo aquí solo en caso de que sea un alumno visual. :)

enter image description here