“什么是”呢;搜索:{…}";/&引用;“中断搜索”;Java中正式调用的语法?

“什么是”呢;搜索:{…}";/&引用;“中断搜索”;Java中正式调用的语法?,java,Java,此代码来自leetcode 681的解决方案: class Solution { public String nextClosestTime(String time) { int cur = 60 * Integer.parseInt(time.substring(0, 2)); cur += Integer.parseInt(time.substring(3)); Set<Integer> allowed = new Hash

此代码来自leetcode 681的解决方案:

class Solution {
    public String nextClosestTime(String time) {
        int cur = 60 * Integer.parseInt(time.substring(0, 2));
        cur += Integer.parseInt(time.substring(3));
        Set<Integer> allowed = new HashSet();
        for (char c: time.toCharArray()) if (c != ':') {
            allowed.add(c - '0');
        }

        while (true) {
            cur = (cur + 1) % (24 * 60);
            int[] digits = new int[]{cur / 60 / 10, cur / 60 % 10, cur % 60 / 10, cur % 60 % 10};
            search : {
                for (int d: digits) if (!allowed.contains(d)) break search;
                return String.format("%02d:%02d", cur / 60, cur % 60);
            }
        }
    }
}

我以前从未见过这样的用途。我能理解它在做什么:感觉它定制了一个“搜索”块,可以从中突破。我只想知道这种用法在Java中的官方名称是什么。谢谢

这个构造在Java中被称为标记的break'

有关更多信息,请访问


你所拥有的是a,其中语句是a,也是a。您没有标记的
break
语句-这是合法的,但很奇怪。

标记的break语句。它看起来像一个“标签”,可以用作“转到”a(或循环)。这是否回答了您的问题?始终尝试使堆栈溢出问题的标题具有足够的描述性,以便有人可以告诉您的问题是关于什么的,而无需点击阅读正文。因此,编辑将“this”替换为您所询问的“this”的描述。中断没有标记。一个块是空的,打断有一个标签。(虽然我接受你的说法,但链接错误地说是。)
            search : {
                for (int d: digits) if (!allowed.contains(d)) break search;
                return String.format("%02d:%02d", cur / 60, cur % 60);
            }