Loops (interromper e retornar, continuar, rótulos) - 1

"Olá, amigo!"

"Hoje vou falar sobre algumas coisas que são convenientes ao trabalhar com loops."

"A primeira é a palavra-chave break . Se você usar este comando no corpo de um loop, o loop terminará imediatamente quando o comando for executado. Aqui está um exemplo:"

Exemplo Saída:
for (int i = 0; i < 10; i++)
{
System.out.println(i);
if (i > 5)
break;
}
0
1
2
3
4
5

"O break só pode ser usado em um loop?"

"Sim. A instrução break só pode ser usada em um loop. Quando uma instrução break é executada, o loop termina imediatamente."

"OK, entendi."

"Ótimo. Agora, a segunda coisa que quero compartilhar é a palavra-chave continue. Ela também pode ser usada apenas em um loop. Quando esse comando é executado, uma nova iteração do loop começa imediatamente. Em outras palavras, qualquer código restante no corpo do loop é simplesmente ignorado."

"Aqui está um exemplo:"

Exemplo Saída:
for (int i = 0; i < 10; i++)
{
if (i % 2 == 0)
continue;
System.out.println(i);
}
1
3
5
7
9

"Então, uma vez que o programa atinge um comando continue em um loop, ele para de executar o código no loop?"

"Não. Olha, temos um loop quando executamos o mesmo código várias vezes. No exemplo acima, temos um loop de 0 a 9, ou seja, o corpo do loop será executado 10 vezes. Certo?"

"Sim."

"Uma passagem pelo corpo do loop é chamada de iteração. Nosso loop consiste em 10 iterações — o corpo do loop será executado dez vezes."

"Sim, está claro."

"O comando continue encerra a iteração atual prematuramente, ou seja, qualquer código restante dentro do loop é ignorado e uma nova iteração começa."

"Aqui está outro exemplo:"

Exemplo
ArrayList list = new ArrayList();
for (Object o: list)
{
if (o == null) continue;
System.out.println(o.toString());
}

"Neste exemplo, exibimos uma representação de string de todos os objetos na lista. Mas ignoramos todos os objetos nulos."

"OK, entendi. Posso ver como isso é conveniente."

"Sim. Também quero falar sobre rótulos. Eles raramente são usados ​​em Java, porque muitas vezes violam a beleza da lógica de um programa. Mas você pode encontrá-los no código em algum momento. Então, prefiro falar sobre eles do que você ouviu falar deles no playground."

"Era uma vez que era permitido pular de qualquer linha para qualquer linha no código. Fizemos isso usando rótulos e a instrução goto. Veja como fica:"

Código horrível com rótulos
System.out.println("Make cookies,");
label: System.out.println("not");
System.out.println("war");
goto label;

"Neste exemplo, depois que o comando goto label é executado, o programa pula para a linha marcada como label .

"Mais tarde, todos perceberam e decidiram não usar a instrução goto . Java não suporta goto, mas goto é uma palavra reservada. Não é grande coisa..."

"Então, sem goto e sem rótulos em Java?"

"Não há instrução goto, mas há rótulos!"

"Como pode ser?"

"Em Java, os rótulos podem ser usados ​​com os comandos continue e break. Eles são usados ​​quando você tem muitos loops aninhados."

"Por exemplo, suponha que você tenha 5 loops aninhados e, quando alguma condição for satisfeita, você deseja sair de três deles, mas não de todos. Os rótulos são uma maneira elegante de fazer isso:"

Exemplo
label1: for (int i = 0; i < 10; i++)
 label2: for (int j = 0; j < 10; j++)
  label3: for (int k =0; k < 10; k++)
   if (i == j && j == k)
    break label2;

"Neste exemplo, quando a instrução break é executada, não saímos do loop com a variável k, mas do loop rotulado label2 - ou seja, saímos imediatamente dos dois loops com k e j."

"Com que frequência isso é usado?"

"Para ser honesto, não com frequência, mas nunca se sabe. Talvez você veja isso algum dia. Esses são os fundamentos da sintaxe - você precisa saber tudo isso!"

"OK. Obrigado, Bilaabo."