Johnnny8:
Desculpe pela demora em responder... Então, quando eu declaro algum código como o citado acima, um for é complemento do outro para formar apenas 1 ou são totalmente independentes.
Ex: o for de 1,2 e 3 formam o 4 ou são independentes?
//1
for (int i = 0; ; );
//2
for ( ; i <= 10; );
//3
for ( ; ; i++);
//4
for(int i = 0; i <= 10; i++){...}
Não confunda as coisas... eles integram ou são separados com base no corpo de cada um.
Perceba que para cada for que declarei existe um ponto-vírgula no final. Essa forma quer dizer que todos os 4 são independentes.
Agora como cada um deles não tem {} não quer dizer que não tem um corpo entende? O corpo de cada um deles é o ;
Ou seja, é um corpo sem instrução, apenas para tentar explicar a sua dúvida anterior quanto ao cabeçalho do for.
Se eu quisesse aninhá-los (declarar um dentro do outro) teria de ser dessa forma:
for (int i = 0; i <= 10; i++)
for (int j = 0; j <= 5; j++)
for (int k = 0; k <= 2; k++)
System.out.println("i = " + i + ", j = " + j + ", k = " + k);
Para reforçar, seria a mesma coisa que isso:
for (int i = 0; i <= 10; i++) {
for (int j = 0; j <= 5; j++) {
for (int k = 0; k <= 2; k++) {
System.out.println("i = " + i + ", j = " + j + ", k = " + k); // opa aqui já tem
}
}
}
E para reforçar mais ainda o primeiro caso do ponto-virgula:
for (int i = 0; i <= 10; i++)
;
for (int j = 0; j <= 5; j++)
;
for (int k = 0; k <= 2; k++)
;
Que seria a mesma coisa que isso:
for (int i = 0; i <= 10; i++) {
}
for (int j = 0; j <= 5; j++) {
}
for (int k = 0; k <= 2; k++) {
}
Há várias formas de se declarar laços, isso também vale para if, if-else, switch/case etc.
Johnnny8:
Assume um true implicito, seria a mesma coisa que isso:
Seguindo o raciocinio...
Se o for assume um true implicitamente, quer dizer que se eu fizer um while(;); vai ser um laço de repetição infinito?
Seguindo o raciocínio de que cada ponto e vírgula é um fim de instrução, o for aceita três tipos de instrução lembra lá no meu primeiro post:
for (inicializacao; condicao; incremento);
Ou seja, dentro de um laço posso ter no máximo três instruções correto? Por isso tenho de separá-las com ;
O while possui apenas um tipo de instrução:
Logo não preciso/posso declarar o ;
Outra coisa é que no caso do while ele obriga você declarar a instrução, então:
Não é válido, ele precisa saber se é true ou false.
Cara desculpe o post tão grande, mas é que você ficou muito tempo sem responder e agora está querendo tirar suas dúvidas de uma vez só, isso confunde até a gente, rsrsrs, mas espero ter sido mas claro agora.