Quem usa for( ; ; )?

Aeh galera,
alguem sabe se o uso de for( ; ; ) tem alguma vantagem sobre um while( true ), e o que justifica usar uma sintaxe tão obscura como essa.

Obrigado.

Não deve ter grande diferenca já que o compilador deve ser espertinho pra otimizar os 2 pra um simples JUMP.

Teoricamente o for é mais lento porque ele faz uma verificação (2o argumento) e uma instrução de passo (3o argumento) enquanto o while só faz 1 verificação.

isso não quer dizer que você tenha que usar somente while. Tome cuidado! :? :wink:

Para um loop infinito normalmente se usa While.
for(;:wink: é coisa de C/C++, já vi muito for(EVER) onde ever é uma diretiva de compilador EVER = ;; :?

pelo menos for(EVER) fica super legal de ler :slight_smile:

Resultados identicos, use aquele que voce preferir.

Quando quiser comparar duas coisas do ponto de vista do que o Java vai fazer, utilize a sintaxe javap -c NomeDaClasse

No caso eu criei dois métodos que faziam um i++ dentro de cada um dos loops, e o resultado foi o seguinte:

[code]public void testFor();
Code:
0: aload_0
1: dup
2: getfield #2; //Field i:I
5: iconst_1
6: iadd
7: putfield #2; //Field i:I
10: goto 0

public void testWhile();
Code:
0: aload_0
1: dup
2: getfield #2; //Field i:I
5: iconst_1
6: iadd
7: putfield #2; //Field i:I
10: goto 0

}
[/code]

Ou seja, os bytecodes gerados são idênticos.
Agora comparando do ponto de vista de prática de programação, na API do Java encontrei bem mais for(;:wink: do que while(true), pelo menos nas classes que já pesquisei, como por exemplo as de regexp.