Camila, boa tarde! Tudo bem?
Geralmente um for tradicional é utilizado para você iterar sobre um array/coleção na qual precisa, por algum motivo, identificar o índice do item, por exemplo:
public static void main(String[] args) {
String[] nomes = new String[5];
nomes[0] = "Nome 0";
nomes[1] = "Nome 1";
for(int contador = 0; contador < nomes.length; contador ++) {
String nome = nomes[contador];
System.out.println(nome);
}
}
Caso não seja necessário utilizar o índice do item, você pode escrever o for de outra maneira:
public static void main(String[] args) {
String[] nomes = new String[5];
nomes[0] = "Nome 0";
nomes[1] = "Nome 1";
for(String nome : nomes) {
System.out.println(nome);
}
}
Observe que alcançamos o mesmo objetivo, mas de forma menos verbosa, temos um código mais enxuto.
Bom! Comentando um pouco sobre o "do while" e também sobre o "while", você ira utiliza-los apenas quando precisar verificar alguma outra condição no loop em execução. Perceba que temos dois recursos do java ok?
Pimeiro o "WHILE":
public static void main(String[] args) {
String[] nomes = new String[5];
nomes[0] = "Nome 0";
nomes[1] = "Nome 1";
int contador = 0;
while(contador < nomes.length) {
System.out.println(nomes[contador]);
contador++;
}
}
Atenção para a condição passado ao "while".
Se você informar uma condição que nunca será verdadeira, o loop não será executado:
public static void main(String[] args) {
String[] nomes = new String[5];
nomes[0] = "Nome 0";
nomes[1] = "Nome 1";
int contador = 0;
while(contador < 0) {
System.out.println(nomes[contador]);
contador++;
}
}
Nesse caso, iniciamos o contador = 0, em seguida, verificamos se contador é menor que zero, como não é, a condição retorna false logo de inicio e o loop não será executado nenhuma vez.
Diferentemente do "DO WHILE", que primeiro executa o bloco de instruções, e somente depois verifica a condição:
public static void main(String[] args) {
String[] nomes = new String[5];
nomes[0] = "Nome 0";
nomes[1] = "Nome 1";
int contador = 0;
do {
System.out.println(nomes[contador]);
contador++;
} while(contador < 0);
}
Aqui a condição também nunca irá retornar true, mas perceba que no console tivemos a saída: "Nome 0". Isso acontece porque o bloco de instruções sempre é executado ao menos uma vez, para que então a condição seja verificada.
Um caso pior, seria informar uma condição que returna true infinitamente. Vou usar o While para explicar essa situação...
public static void main(String[] args) {
String[] nomes = new String[5];
nomes[0] = "Nome 0";
nomes[1] = "Nome 1";
int contador = 0;
while(contador < 10) {
System.out.println(nomes[contador]);
// contador++;
}
}
Para esse caso eu comentei a linha que incrementa o contador, ou seja, o mesmo nunca chegará a 10, a verificação a ser feita irá retornar sempre true, ou seja, infinitamente o contador será menor que 10 e o loop não chegará ao fim, ou em algum momento, teremos o famoso... "StackOverflow"
Podemos dizer que, o While significa:
Enquanto (condição for verdadeira) execute...
E Do While, significa:
Execute... Enquanto(condição for verdadeira)
Espero ter ajudado ;)