Java中的标记语句块?
我在浏览一些基本Java对象时,发现一段代码被Java中的标记语句块?,java,syntax,Java,Syntax,我在浏览一些基本Java对象时,发现一段代码被scan:{}块包围。以下代码来自String类中的toLowerCase()方法 scan: { for (firstUpper = 0 ; firstUpper < len; ) { char c = value[firstUpper]; if ((c >= Character.MIN_HIGH_SURROGATE)
scan:{}
块包围。以下代码来自String类中的toLowerCase()方法
scan: {
for (firstUpper = 0 ; firstUpper < len; ) {
char c = value[firstUpper];
if ((c >= Character.MIN_HIGH_SURROGATE)
&& (c <= Character.MAX_HIGH_SURROGATE)) {
int supplChar = codePointAt(firstUpper);
if (supplChar != Character.toLowerCase(supplChar)) {
break scan;
}
firstUpper += Character.charCount(supplChar);
} else {
if (c != Character.toLowerCase(c)) {
break scan;
}
firstUpper++;
}
}
return this;
}
扫描:{
for(firstUpper=0;firstUpper=Character.MIN\u HIGH\u代理)
&&(c它是一个标记的块。
其中扫描:是一个标签。如果有多个循环,通常在断开/继续时使用。
在这种情况下,break-scan;
在执行时只是将标记的块(scan)断开。这里,scan:
只是一个。break
语法允许一个人断开外部循环,并模拟goto
语句的某些形式。语法记录在:
带有标签标识符的break
语句试图将控制权转移到包含标签的语句中(§14.7)具有与其标签相同的标识符;此语句称为中断目标,然后立即正常完成。在这种情况下,中断目标不必是开关,while
,do
或for
语句
可以将标签设置为从多个循环中断开/继续
范例
outer:
for(int i=...){
for(int j=..){
...
break outer; // leaves both loops
}
}
它是一个标签
。它是流量控制的指示器
如果你看一下你的代码,你会看到下面
break scan;
发生这种情况时,流将完全退出scan
块
顺便说一句,它可以是任何标识符,scan
根本不是一个关键词。这种做法和goto的做法一样遭人诟病吗?@Daniel:我不想开始任何宗教辩论。;)但是,因为这种形式可以被认为更“结构化”与原始<代码> Goto 相比,我想一些反<代码> Goto 倡导者可能会认为它不那么令人讨厌。“丹尼尔不,因为你不能用它任意地跳转代码。它在嵌套循环中使用<代码>破解< /CUTE来指定哪个循环要被破解。”你的链接完美地回答了我的问题。为什么我找不到扫描块!再次感谢