I was browsing through some of the base Java objects when I found a section of code surrounded by a scan: {}
block. The following code is from the toLowerCase()
It is a labeled block.
where scan: is a label. It is commonly used when breaking/continue in case you have multiple loops.
In this case break scan;
simply breaks outta the labeled block(scan) when executed.
Here, scan:
is simply a label. The break <label>
syntax allows one to break out of outer loops, and to simulate some forms of the goto
statement. The syntax is documented in the JLS:
A
break
statement with labelIdentifier
attempts to transfer control to the enclosing labeled statement (§14.7) that has the sameIdentifier
as its label; this statement, which is called the break target, then immediately completes normally. In this case, the break target need not be aswitch
,while
,do
, orfor
statement.
You can set a label to break / or continue from within multiple loops deep.
Example
outer:
for(int i=...){
for(int j=..){
...
break outer; // leaves both loops
}
}
It is a label
. It is a indicator for flow control.
If you look at your code, you see below
break scan;
When this happens, the flow exits completely the scan
block.
By the way, it can be any identifier, scan
is not a keyword at all.