栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

请解释标签声明的用法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

请解释标签声明的用法

[JLS

14.7带标签的语句](https://docs.oracle.com/javase/specs/jls/se14/html/jls-14.html#jls-14.7)

(为清楚起见进行了编辑)

语句 可能具有标签前缀( IdentifierStatement )。该 标识符 被声明为直接包含的标签 声明

与C和C
++不同,Java编程语言没有

goto
语句。标识符语句标签与
break
(§14.15)或
continue
(§14.16)语句一起出现在带标签的语句中的任何地方。

因此,JLS很清楚,标签与

break
或一起使用
continue
,并且Java编程语言中没有其他语法元素使用它。

严格来说,

break
continue
,是否标记都 没有 必要。它们总是可以用代码写出来。但是,惯用语会导致代码更具可读性。


这是一个说明性示例:给定

int[]
,我们想要:

  • 打印
    "One (1)"
    1
  • 打印
    "Two (2)"
    2
  • 打印
    "Zero "
    0
  • 立即停止处理其他任何号码
    int[] arr = { 1, 2, 0, 1, -1, 0, 2 };

    loop:
    for (int num : arr) {
    switch (num) {
    case 1:
    System.out.print(“One “);
    break;
    case 2:
    System.out.print(“Two “);
    break;
    case 0:
    System.out.print(“Zero “);
    continue loop;
    default:
    break loop;
    }
    System.out.print(“(” + num + “) “);
    }
    // prints “One (1) Two (2) Zero One (1) “

在这里,我们看到:

  • 不同的数字在一个
    switch
  • 未标记
    break
    switch
    用于避免“落空”情况之间
  • 带标签
    continue loop;
    的用于跳过后处理
    case 0:
    (此处无需标签)
  • Labeled
    break loop;
    用于终止循环
    default:
    (在这里标签 必需的;否则为
    switch break

因此,标记为

break
/的代码
continue
也可以在嵌套循环之外使用;当a
switch
嵌套在循环中时可以使用它。更一般而言,在可能有多个
break
/
continue
目标并且您希望选择一个不立即包含
break
/
continue
语句的目标时使用它。


这是另一个例子:

    morningRoutine: {        phase1: eatBreakfast();        if (grumpy) break morningRoutine;        phase2: kissWife();        phase3: hugChildren();    }    http://stackoverflow.com is the best website ever!

这是带标签的另一种情况,

break
它不在迭代语句中使用,而是在简单的block语句中使用。有人可能会说标签带来更好的可读性。这一点是主观的。

不,最后一行不给出编译时错误。它实际上是受 Java Puzzlers Puzzle
22:URL重复的启发。不幸的是,这个谜题并没有更深入地“正确”使用带标签的语句。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419030.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号