当前位置: 首页 > 面试题库 >

请解释标签声明的用法

家经纶
2023-03-14
问题内容
  • 打破并继续Java中标记语句的唯一用法吗?
  • 您何时在程序中使用了标签语句?

抱歉,该代码段已删除。 我正在拆分问题


问题答案:

[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编程语言中没有其他语法元素使用它。

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

这是一个说明性示例:给定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
  • 未标记breakswitch用于避免“落空”情况之间
  • 带标签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重复的启发。不幸的是,这个谜题并没有更深入地“正确”使用带标签的语句。



 类似资料:
  • 我是Spring的新手,并试图理解在我的Spring配置文件中声明的bean标记,如下所示: 我正在努力理解这5行代码。第一行表示它是一个XML文件。请有人帮我理解其他4行,以及向Spring应用程序提供这些信息的原因。

  • 问题内容: 有人可以解释一下这是什么意思吗? 这似乎是一个循环定义,至少可以说让我感到困惑。 问题答案: Java Generics FAQ中 有很好的解释。 从末尾开始: 概括起来,声明可以解密为:是仅可为其子类型实例化的泛型类型,并且这些子类型将继承一些有用的方法,其中一些方法具有子类型特定的参数(否则取决于子类型)。 (尽管我确实很同情-递归的泛型声明很痛苦。但是,我的协议缓冲端口到C#的情

  • 我正面临XML声明的问题。我想从XML文件中省略XML声明。为此,我在XSLT文件中编写了下面的代码。

  • 本文向大家介绍请解释下为什么我们可以在声明函数前使用它?相关面试题,主要包含被问及请解释下为什么我们可以在声明函数前使用它?时的应答技巧和注意事项,需要的朋友参考一下 js 两个特性, 提升变量声明和函数声明,但是注意一点的是 这个是不叫函数声明的, 变量funcName还是会提升,只不过作为一个undefined的变量, 只有 这个叫函数声明,会被提升

  • 在PHPCMS V9中我们正式开始需要PC标签做为数据的获取的方式。 PC标签是以下面的方式进行声明 {pc:content action="lists" cache="3600" num="20" page="$page"}{/pc} PC标签必须以{pc}开头,并以{/pc}结尾的代码片段。 当然不以{/pc}结尾并不会引起程序致命性的错误,导致程序无法继续运行。 以下为两种已知可能会出现

  • 鉴于此注释: my library的用户可以扩展其API,创建带有注释的自定义注释,如下所示: AbstractProcessor提供了一个名为getSupportedAnnotationTypes的方法,该方法返回处理器支持的注释类型的名称。但是如果我指定的名称,如下所示: 当使用注释对类进行注释时,不会通知处理器#进程方法。 因此,当使用