首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  Java

翻看 Java10 里面的 ArrayList 源码,remove 方法里面有个 found: {} 这是什么意思呢?

  •  
  •   kpppp · 34 天前 · 1740 次点击
    这是一个创建于 34 天前的主题,其中的信息可能已经有所发展或是发生改变。
        public boolean remove(Object o) {
            final Object[] es = elementData;
            final int size = this.size;
            int i = 0;
            found: {
                if (o == null) {
                    for (; i < size; i++)
                        if (es[i] == null)
                            break found;
                } else {
                    for (; i < size; i++)
                        if (o.equals(es[i]))
                            break found;
                }
                return false;
            }
            fastRemove(es, i);
            return true;
        }
    

    地址: https://github.com/zxiaofan/JDK/blob/master/JDK10-Java%20SE%20Development%20Kit%2010/src/java.base/java/util/ArrayList.java

    12 回复  |  直到 2019-10-16 01:20:04 +08:00
        1
    anofac   34 天前
    java 的 label 语法,有点像其他语言的 goto,但不全是。"found"只是 label 的名字
        3
    phantomzz   34 天前
    可以看一下 java 跳出循环的几种方式,label 类似于 goto 语法,可以用来跳出多重循环
        4
    guyeu   34 天前
    这个是很早就有的一个 java 特性,可以命名一个语句块然后通过 break name 的方式跳出该语句块
        5
    Rwing   34 天前
    我比较好奇这 repo 存一堆 jdk 源码干什么。。。拿来当网盘吗?
        6
    guyeu   34 天前
    个人觉得和 goto 完全不同,它只是跳出而不是跳到,没办法用它来实现循环
        7
    kpppp   34 天前
    @anofac
    @phantomzz
    @IamNotShady
    非常感谢您们的帮助
        8
    lihongjie0209   34 天前
    高级一点的 break, 可以跳出多个循环
        9
    chengyiqun   34 天前
    @guyeu 相当于阉割版的 goto 语句
        10
    zazalu   33 天前
    很早就有的特性,就是一个 label,定位识别区分用的呗
        11
    NotFoundEgg   33 天前
    是一种支持多层 break 的标签
        12
    KINGOD   33 天前
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4279 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 29ms · UTC 06:26 · PVG 14:26 · LAX 22:26 · JFK 01:26
    ♥ Do have faith in what you're doing.