Achei o caso abaixo curioso. Percebi quando estava aprendendo a fazer while.
public class WhileLoop {
public static void main(String[] args) {
int x = 3;
while (x > 0) {
System.out.println("Primeiro teste " + x);
x--;
}
while (x >= 0) {
System.out.println("Segundo teste " + x);
x--;
}
}
}
O resultado disto é : Primeiro teste 3 Primeiro teste 2 Primeiro teste 1 Segundo teste 0
Mesmo o X estando fora do while, depois de executar o primeiro loop o segundo loop aproveita a memória usada dentro do primeiro. Não busca novamente a informação de fora do X que seria 3.
Entretanto, se criar uma variável Y = X passamos a ter dois loops independentes.
public class WhileLoop {
public static void main(String[] args) {
int x = 3;
int y = x;
while (x > 0) {
System.out.println("Primeiro teste " + x);
x--;
}
while (y >= 0) {
System.out.println("Segundo teste " + y);
y--;
}
}
}
Resultado:
Primeiro teste 3 Primeiro teste 2 Primeiro teste 1 Segundo teste 3 Segundo teste 2 Segundo teste 1 Segundo teste 0