lembrando que:
1 A nomenclatura de um label (rótulo) segue as normas de nomes para variaveis, ou métodos ou classes.
2 Ela pode vir antes de uma instrução que pode ser
Statement:
StatementWithoutTrailingSubstatement
LabeledStatement
IfThenStatement
IfThenElseStatement
WhileStatement
ForStatement
StatementWithoutTrailingSubstatement:
Block
EmptyStatement
ExpressionStatement
SwitchStatement
DoStatement
BreakStatement
ContinueStatement
ReturnStatement
SynchronizedStatement
ThrowStatement
TryStatement
StatementNoShortIf:
StatementWithoutTrailingSubstatement
LabeledStatementNoShortIf
IfThenElseStatementNoShortIf
WhileStatementNoShortIf
ForStatementNoShortIf
Ou seja, Um Label pode ser colocado antes um outro label
Ex.:
Label1: Label3: Label4: Label5: ......
Antes de if,while, for, bloco, instrução vazia(
, expressão, do…while, break, continue, return,throw,try, synchronized(blocos no caso)
label: synchronized(object){
//Código bloqueado
};
3 Não existe restrição a repetição de nomes declarados como label
Você pode ter isso no seu código
hsjs: System.out.println("/");
hsjs: System.out.println("/");
hsjs: System.out.println("/");
hsjs: for(;;){
break hsjs;
}
4 o break poderá ou não chamar o label, caso chame é virá antes do label terminando com ( ; ) break Identifieropt ;
5 o break deverá estar dentro de um loop switch, while, do, or for, ou um bloco rotulado. E fará com que com haja um interrupção do bloco que ele se refere,que poderá ser o label que ele se refere ou ao loop mais interno.
6 o break deverá ser a última instrução dentro do seu bloco.
Senão por exemplo:
label:{
break label;
System.out.println("saindo do bloco");
}
O compilador reclama “Error: statement not reachable”
7 caso o break esteja dentro de um catch, e houver o bloco
finally, antes de sair do bloco abruptalmente, o finally e´ executado!
label:{
try{
throw new Exception();
}catch(Exception e){
break label;
}finally{
System.out.println("finally");
}
}
8 o continue poderá ou não chamar o label, caso chame é virá antes do label terminando com ( ; ) continue Identifieropt ;
9 difere do break, porque o continue só pode ser usado dentro de um loop, e caso use algum rótulo, o mesmo deve estar antes de um loop.