`
liufeng063x
  • 浏览: 41997 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Java 语句标签实现goto跳转

    博客分类:
  • Java
阅读更多

1. 标签语句概述
Java允许在语句前加上标签前缀,构成标签(label)语句。其一般格式为:
标识符:语句
其中标识符应是Java语言中合法的标识符;语句可以是任意Java语句,包括简单语句、复合语句(语句块)、控制转移语句、空语句。但由于在Java中,标签语句仅能与break和continue语句配合使用,所以给简单语句或空语句加标签没有意义。
含义是,为冒号“:”后的语句指定名为“标识符”的标签。如:
Outer:
{
......
}
Outer2:while(true)
{
......
}
提及标签语句,最好先介绍一下它的老搭档goto语句。goto语句可以说是程序控制结构的始祖,它在程序中与标签语句配合使用可灵活地构造任意复杂的业务逻辑。但由于它过于灵活,在编程时常被随意跳转,使程序控制结构变的复杂而且混乱。随着E. W. Dijkstra著名的“goto语句有害论”的问世和广泛争论,goto语句也逐渐失宠,并在Java中被取消。
当然,goto语句也并非一无是处,在一些情况下,如需从嵌套很深的循环中退出时,它还是组织控制流程的最佳手段。为此,Java虽取消了goto语句,但Java仍保留了goto语句的优点。通过标签语句与break、continue语句的配合,构造带标号的break语句和带标号的continue语句,允许程序从循环体内部退出到循环体外部或者从语句块内部退出至语句块外部,但不允许从外部跳转至内部。带标号的break,continue语句格式如下:
break  labelIdentifier;
continue labelIdentifier;
带标号的break和continue语句,只能在标签所指的语句块或其嵌套包含的内层语句块中使用。表示从语句块内部退出到指定语句块中。如下面程序第9行的break语句用法是不允许的。
 
2. 与break语句配合使用
带标号的break语句,可以使程序从复合语句或循环体内部退出到指定标签所标识的外层语句块末尾,继续执行之后的语句。如可以从最里层(第n层),退出到最外层(第1层),也可退出到第n-m层(n>m)。图5-15演示了这一语义。
当带标号的break语句,从第n层退出到n-1层时,其效果与不带标号的break语句是相同的。如下例:
 
 
 
图5-15   带标签的break语句工作原理
带标号的break语句最常用的用法是退出循环嵌套,当程序需要从嵌套很深的循环中退出时,它是非常有价值的,因为它可大大简化代码的执行过程。例5.16显示了这一道理。
【例5.16】
 
当程序从第5层循环中退出到第一层循环时,循环均被终止。
3. 与continue语句配合使用
带标号的continue语句只能在循环体内部使用,使程序终止当前循环;从循环体内部跳出到标签所指的循环控制层,再判定该循环判定表达式,以决定是否再次进入该循环,图5-16演示了这一过程。这与带标号的break语句终止该循环不同。
与带标号的break语句一样,当带标号的continue语句,从第n层退出到n-1层时,其效果与不带标号的continue语句是相同的。
下面再来关注一下例5.12中九九乘法表的打印,用带标号的continue语句实现相同功能。
【例5.17】
 
 
程序执行结果,同例5.13。
 
在优质的Java程序中,标签语句是比较不常用的。因为Java提供了丰富的循环语句,可适用于绝大多数场合。

分享到:
评论

相关推荐

    详解Java语言中的跳转语句.pdf

    然而,在Java语言中,并没有像其他语言一样的goto语句,而是使用break和continue语句来控制程序的流程。 一、break语句 break语句是Java语言中的一种跳转语句,它用于结束当前的循环或switch语句。break语句可以在...

    Java的“Goto”与标签及使用详解

    Java中的“Goto”与标签...Java语言中没有goto语句,但是提供了其他方法来实现类似于goto的跳转操作,主要是通过使用标签。标签是Java语言中的一种特殊的语句,用于标记某个位置,以便在后续的代码中可以跳转到该位置。

    Java 中少为人知的小点子

    我们可以使用这种方式来实现 break/continue 语句的跳转目标。 2. Labeled Statements 的使用 Labeled Statements 是 Java 语言中的一种语句,它允许我们使用标签来标记一段代码。例如: ``` 1: for(int I1 = 0; ...

    2019年最新版修订版Java程序员面试宝典.pdf

    4. Java没有goto语句:Java语言的设计者决定不包含goto语句,因为goto是一个非结构化的跳转语句,使用不当会导致程序的可读性和可维护性降低。 5. &和&&的区别:&是按位与操作符,对操作数的二进制位进行逻辑与操作...

    2019最全的java面试题

    Goto关键字是早期编程语言如C和C++中用来进行无条件跳转的语句,但现代高级语言中,包括Java,不支持这种跳转,原因在于它可能导致程序的结构混乱,降低代码的可读性和可维护性。Java保留了goto关键字,但实际上并未...

    深入浅析Java 循环中标签的作用

    这种标签机制避免了使用`goto`语句导致的代码混乱,同时也提供了更清晰、更可控的循环控制。在处理复杂嵌套循环或需要特殊跳转逻辑的场景下,使用循环标签可以提高代码的可读性和可维护性。不过,应该谨慎使用,以...

    java葵发宝典

    在Java中,如果你想跳出多重循环,可以使用`break`语句配合标签来实现。例如: ```java outerLoop: for (int i = 0; i ; i++) { for (int j = 0; j ; j++) { if (某些条件) { break outerLoop; // 跳出外层循环 ...

    Java面试宝典

    Java中没有goto语句,它被认为是一种不安全的跳转。 3. &和&&的区别在于,&是逻辑与运算符,两边的表达式都会执行;而&&是短路与运算符,如果第一个表达式为false,则不会执行第二个表达式。 4. 在Java中跳出多重...

    java开发工程师面试题

    Java语言中没有goto语句,但有break和continue来控制循环跳转。 - &和&&的区别在于,&是按位与运算符,而&&是逻辑与运算符。后者具有短路特性,即如果第一个操作数已经能确定整个表达式的结果,则不会计算第二个...

    java经典面试题3

    Java避免了类似C语言中的`goto`语句,因为它容易导致难以追踪的复杂代码路径,增加了程序的维护难度。通过限制跳转语句的种类,Java鼓励开发者编写结构更清晰、更易于理解和维护的代码。 以上问题涵盖了Java语言的...

    JAVA语法大全(基本语法)

    语句是JAVA程序中的基本执行单元,包括赋值语句、循环语句、选择语句、跳转语句等。JAVA中的循环语句包括for、while、do-while三种。 七、数组和字符串 数组是JAVA中的一种重要数据结构,用于存储多个相同类型的...

    java经典技术

    2. **Java中没有goto**:Java语言中没有goto关键字,它倡导的是结构化编程,强调代码的可读性和可维护性,通过if、while、for、switch等控制流语句来实现程序流程的跳转。 3. **&和&&的区别**:&是位运算符,用于...

    java笔试题附答案

    虽然goto是Java语言中的保留字,但Java并没有实现goto语句。Java的控制流程主要依赖于条件语句和循环语句,从而避免了使用跳转语句带来的程序难以理解和维护的问题。 11. length属性和length()方法: 数组类型具有...

    (张孝祥)java 最新基础面试题总结1

    开发人员应避免依赖于`goto`,转而使用控制流语句(如`break`、`continue`和`return`)来实现类似的跳转功能。 4. 跳出多重嵌套循环的方法 要跳出多重嵌套循环,可以使用`break`语句配合标签,或者通过改变外层...

    java面试1000题

    - goto并非Java关键字,尽管在C/C++中是合法的关键字,但在Java中它被保留未使用。 - Java中关键字包括if、private等,用于定义语句和结构。 - 正确的变量声明示例:`int number = 5;`,注意Java是强类型语言,类型...

    Java面试宝典2015版

    - Java没有goto语句,它不支持无条件跳转。 - &和&&都是逻辑与操作符,但&是逻辑与操作符,无论左右操作数是什么条件都会被求值,而&&是逻辑与操作符,当左边的操作数为false时,右边的操作数将不会被求值。 - ...

    Java常见FQA.pdf

    goto也是Java的一个保留字,用于表示跳转标签,尽管Java不支持使用goto语句。 10. Java的注释和编码规范 文档中提到了/***/和//两种注释的使用方法。注释是代码的说明书,有助于他人理解程序的目的和实现方式。编码...

    JAVA开发工程师测试题.doc

    解释:Java不支持goto语句。 2. Java是一种编译型语言还是解释型语言? 答案:D 解释:Java是一种兼有编译和解释的语言,Java通过解释型方式将源文件变为目标文件,再通过编译型方式将目标文件变为可执行文件,...

    JAVA面试题

    - Java中虽然有`goto`保留字,但在语言规范中并没有实现相关的跳转功能。 通过这些知识点,可以看出Java面试题集覆盖了Java编程语言的基础知识、面向对象的原理、以及与Java生态相关的多种技术。掌握这些知识点对于...

Global site tag (gtag.js) - Google Analytics