Oie Ricardo, tudo bem com você?
Vou destrinchar loop por loop para ficar mais claro para você.
Antes disso, por conta de ter dois "fors" vou usar a seguinte nomenclatura para facilitar o entendimento:
1º for = "for de linha"
2º for = "for de coluna"
Vamos lá
1º loop do "for de linha":
for(int linha = 0; linha < 5; linha++) { // linha = 0
//1º Loop "for de coluna:
for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 0
if ( coluna > linha ) { // 0 > 0 = false, quando é falso ele não percorre o if
break;
}
System.out.print( coluna+1 ); //print(0 + 1)
} // depois de printar ele volta para o começo do "for de coluna"
System.out.println();
}
}
Resposta: 1
for(int linha = 0; linha < 5; linha++) { //linha = 0
//2º Loop "for de coluna:
for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 1
if ( coluna > linha ) { // 1 > 0 = true, quando é verdadeiro ele percorre o if
break; // o break quebra o loop, fazendo ele pular todo o restante de código e faz retornar para o primeiro for
}
System.out.print( coluna+1 ); //não ocorre o print pois o break quebra o laço antes de chegar nessa linha
}
System.out.println();
}
}
Resposta: nenhuma
Resposta completa do 1º loop do "for de linha": 1
2º loop do for de linha:
for(int linha = 0; linha < 5; linha++) { // linha = 1, depois do break do último loop ele retorno para essa posição
//1º Loop "for de coluna:
for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 0, depois do break e o começo de um novo loop a partir do primeiro for, esse for é reiniciado, por isso coluna é igual a 0 novamente.
if ( coluna > linha ) { // 0 > 1 = false, quando é falso ele não percorre o if
break;
}
System.out.print( coluna+1 ); //print(0 + 1)
} // depois de printar ele volta para o começo do "for de coluna"
System.out.println();
}
}
Resposta: 1
for(int linha = 0; linha < 5; linha++) { // linha = 1
//2º Loop "for de coluna:
for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 1
if ( coluna > linha ) { // 1 > 1 = false, quando é falso ele não percorre o if
break;
}
System.out.print( coluna+1 ); //print(1 + 1)
} // depois de printar ele volta para o começo do "for de coluna"
System.out.println();
}
}
Resposta: 2
for(int linha = 0; linha < 5; linha++) { // linha = 1
//3º Loop "for de coluna:
for (int coluna = 0; coluna <= 5; coluna++) { //coluna = 2
if ( coluna > linha ) { // 2 > 1 = true, quando é verdadeiro ele percorre o if
break; // o break quebra o loop, fazendo ele pular todo o restante de código e faz retornar para o primeiro for
}
System.out.print( coluna+1 ); // não ocorre o print pois o break quebra o laço antes de chegar nessa linha
}
System.out.println();
}
}
Resposta: Nenhuma
Resposta completa do 2º loop do "for de linha": 1 2
A logica apresentada repete nos próximos loops até o valor de "linha" ser igual a 5 fazendo com que o "for" não ocorra por conta da operação "linha < 5" não ser verdadeira (true).
Espero que agora você tenha entendido melhor. Qualquer coisa fico à disposição! :)
Bons estudos!