什么是Java中的scan:{}块?

MCM*_*ery 2 java

我正在查看8u40-b25 JDK类String的源代码,它包含一个scan: {}块:

2557        /* Now check if there are any characters that need to be changed. */
2558        scan: {
2559            for (firstUpper = 0 ; firstUpper < len; ) {
2560                char c = value[firstUpper];
2561                if ((c >= Character.MIN_HIGH_SURROGATE)
2562                        && (c <= Character.MAX_HIGH_SURROGATE)) {
2563                    int supplChar = codePointAt(firstUpper);
2564                    if (supplChar != Character.toLowerCase(supplChar)) {
2565                        break scan;
2566                    }
2567                    firstUpper += Character.charCount(supplChar);
2568                } else {
2569                    if (c != Character.toLowerCase(c)) {
2570                        break scan;
2571                    }
2572                    firstUpper++;
2573                }
2574            }
2575            return this;
2576        }
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

Jon*_*eet 5

scan只是一个标签.它允许稍后:

break scan;
Run Code Online (Sandbox Code Playgroud)

...允许break语句突破外循环而不是内循环.

有关标记语句的更多详细信息,请参阅JLS的第14.7节.