O Java continua e quebra Palavras-chave
1. Visão geral
Neste artigo rápido, apresentaremoscontinue ebreak palavras-chave Java e nos concentraremos em como usá-las na prática.
Simplificando, a execução dessas instruções causa ramificação do fluxo de controle atual e finaliza a execução do código na iteração atual.
2. A declaraçãobreak
A instruçãobreak vem em duas formas: sem rótulo e rotulado.
2.1. break sem etiqueta
Podemos usar a instrução sem etiqueta para encerrar um loopfor,while oudo-while, bem como o blocoswitch-case:
for (int i = 0; i < 5; i++) {
if (i == 3) {
break;
}
}
Este trecho define um loopfor que deve iterar cinco vezes. But when counter equals 3, the if condition becomes true and the break statement terminates the loop. Isso faz com que o fluxo de controle seja transferido para a instrução que segue após o final do loopfor.
No caso de loops aninhados,an unlabeled break statement only terminates the inner loop that it’s in. Os loops externos continuam a execução:
for (int rowNum = 0; rowNum < 3; rowNum++) {
for (int colNum = 0; colNum < 4; colNum++) {
if (colNum == 3) {
break;
}
}
}
Este snippet aninhadofor loops. When colNum equals 3, the if the condition evaluates to true and the break statement causes the inner for loop to terminate. No entanto, o loop externofor continua iterando.
2.2. Com a etiquetabreak
Também podemos usar uma instruçãobreak rotulada para encerrar um loopfor,while oudo-while. A labeled break terminates the outer loop.
Na finalização, o fluxo de controle é transferido para a instrução imediatamente após o final do loop externo:
compare:
for (int rowNum = 0; rowNum < 3; rowNum++) {
for (int colNum = 0; colNum < 4; colNum++) {
if (rowNum == 1 && colNum == 3) {
break compare;
}
}
}
Neste exemplo, introduzimos um rótulo antes do loop externo. QuandorowNum é igual a 1 ecolNum é igual a 3, a condiçãoif é avaliada comotruee a instruçãobreak termina o loop externo.
O fluxo de controle é então transferido para a instrução após o final do loop externofor.
3. A declaraçãocontinue
A instruçãocontinue também vem em duas formas: não rotulada e rotulada.
3.1. continue sem etiqueta
Podemos usar uma instrução sem rótulo para ignorar a execução do restante das instruções na iteração atual de um loopfor,while oudo-while. It skips to the end of the inner loop and continues the loop:
int counter = 0;
for (int rowNum = 0; rowNum < 3; rowNum++) {
for (int colNum = 0; colNum < 4; colNum++) {
if (colNum != 3) {
continue;
}
counter++;
}
}
Neste trecho, sempre quecolNum não for igual a 3, a instruçãocontinue não rotulada pula a iteração atual, ignorando assim o incremento da variávelcounter nessa iteração. No entanto, o loop externofor continua a iterar. Portanto, o incremento decounter ocorre apenas quandocolNum é igual a 3 em cada iteração do loop externofor.
3.2. Com a etiquetacontinue
Também podemos usara labeled continue statement which skips the outer loop. Ao pular, o fluxo de controle é transferido para o final do loop externo, continuando efetivamente a iteração do loop externo:
int counter = 0;
compare:
for (int rowNum = 0; rowNum < 3; rowNum++) {
for (int colNum = 0; colNum < 4; colNum++) {
if (colNum == 3) {
counter++;
continue compare;
}
}
}
Introduzimos um rótulo logo antes do loop externo. Sempre quecolNum for igual a 3, a variávelcounter é incrementada. A instruçãocontinue rotulada faz com que a iteração do loop externofor salte.
O fluxo de controle é transferido para o final do loop externofor, que continua com a próxima iteração.
4. Conclusão
Neste tutorial, vimos diferentes maneiras de usar as palavras-chavebreakecontinue como instruções de ramificação em Java.
O código completo apresentado neste artigo está disponívelover on GitHub.