JAVA中冒号的一种用法,很少被人提及,我也从来没使用过。以前在一本书中看过的这种,该作者不推荐使用,今天闲了翻源码在String中看到:
定义标记scan: 括号中的内容如果遇到 break scan 立即跳回scan。 并且不再进入scan内部。(无论多少层循环,总调到标记被定义的地方)
该语法仅限了解,本人也不推荐日常使用,写框架或底层接口可以考虑。
public String toUpperCase(Locale locale) {
if (locale == null) {
throw new NullPointerException();
}
int firstLower;
final int len = value.length;
/* Now check if there are any characters that need to be changed. */
scan: {
for (firstLower = 0 ; firstLower < len; ) {
int c = (int)value[firstLower];
int srcCount;
if ((c >= Character.MIN_HIGH_SURROGATE)
&& (c <= Character.MAX_HIGH_SURROGATE)) {
c = codePointAt(firstLower);
srcCount = Character.charCount(c);
} else {
srcCount = 1;
}
int upperCaseChar = Character.toUpperCaseEx(c);
if ((upperCaseChar == Character.ERROR)
|| (c != upperCaseChar)) {
break scan;
}
firstLower += srcCount;
}
return this;
}