A label is
defined throughout the block in which it occurs. The names of labels
are independent of all other kinds of names. In other words, if
a label has the same name as a local variable, formal parameter,
class, interface, field variable, or method, there is never any
confusion or interaction between those names.[1]
For example, the following
code works even though it contains a label and formal parameter
with the same name:

[1]
Prior to
version 1.0.2, Java required labels to have names that did not conflict
with the names of local variables or formal parameters.

Labels are used to mark statements, but a labeled statement
does not affect the order of execution when it is defined. The statement
following the label is executed as if the label were not present.
However, a label can be used in a break
or continue
statement to transfer control to a labeled statement. Unlike C/C++,
Java does not have a goto statement.