`
yajie
  • 浏览: 210753 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java中的GOTO

阅读更多

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提供了丰富的循环语句,可适用于绝大多数场合。

0
0
分享到:
评论
1 楼 625869881 2012-04-15  
怎么图片都看不到呢

相关推荐

    Java中有没有goto关键字

    Java中有goto关键字吗? 答案是有的,goto是java保留关键字,但是不能使用。 在哪里有应用? 在C语言中goto一般配合条件语句,可用来实现条件转移,形成循环,跳出循环等。 注:java的底层是C,goto是java的保留字

    java面试宝典codejava部分

    Java中没有goto语句,它被用于跳转到特定的行,而Java中使用的是break和continue来控制循环。 ##### 8. int与Integer的区别 int是基本数据类型,而Integer是int的包装类,提供了更多功能如自动装箱与拆箱。 ##### ...

    java面试题(基础部分).pdf

    10. **goto关键字**:Java中goto是保留字,但并未实际使用,不支持goto语句。 11. **length()方法**:数组没有length()方法,但有一个length属性来获取长度。String类有一个length()方法,返回字符串的字符数。 12...

    Java考试题,很基础的

    6. **Java关键字**:Java中goto和malloc不是关键字,而extends和while是。因此,B)malloc不是Java的关键字。 7. **变量初始化**:未初始化的变量不能进行数学操作。在给出的代码中,age未初始化就尝试加1,导致...

    JAVA语言中文教程

    搭建JAVA开发环境通常需要安装Java Development Kit (JDK),并配置环境变量,以便在命令行或集成开发环境(IDE)中运行JAVA程序。 #### 两个入门程序 通常,第一个JAVA程序是“Hello World”示例,用于演示如何创建...

    java中的关键字大全

    ### Java中的关键字大全 在Java编程语言中,关键字是一组预定义的词汇,它们具有特殊的含义和用途。理解和掌握这些关键字对于编写有效的Java程序至关重要。本文将详细介绍Java中的一些核心关键字,并提供相应的解释...

    Java 中少为人知的小点子

    在 Java 中,goto 语句是一个保留的关键字,但不允许使用。然而,我们可以使用标签语句来实现类似的功能。例如: ``` 1: statement1; 2: statement_label_for_section2: 3: statement2; 4: goto statement_label_for...

    Thinking in java4(中文高清版)-java的'圣经'

    一切都是对象 2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.2.1 存储到什么地方 2.2.2 特例:基本类型 2.2.3 Java中的数组 2.3 永远不需要销毁对象 2.3.1 作用域 2.3.2 对象的作用域 2.4 创建新的数据类型:类 ...

    Android面试题,有答案,清除解析

    - Java中goto是保留字,但未被使用,不支持goto语句。 11. **length()方法**: - 数组没有length()方法,但有length属性。 - String类具有length()方法,返回字符串的长度。 12. **Overload和Override的区别**...

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

    Java中的“Goto”与标签及使用详解 Java中的“Goto”与标签是两个相关而又不同的概念。本文将详细介绍Java中的“Goto”与标签的概念、使用场景、使用方法及实现原理。 一、Java中的“Goto” -------------------- ...

    JAVA中的保留关键字

    - `goto`:同样是C++中的关键字,在Java中保留但未使用。 #### 总结 掌握Java的关键字和保留关键字对于编写高质量、可维护的代码至关重要。了解每个关键字的含义及其用法有助于提高编程效率,并减少错误的发生。...

    java葵花宝典-2013.doc

    2. Java中没有goto语句,但是可以使用break和continue语句跳出循环。 3. &和&&的区别:&是位运算符,表示逻辑与的运算符,具有短路功能的功能;&&是逻辑与的运算符,具有短路功能的功能。 4. 在JAVA中可以使用标号...

    java第一章java概述教学课件

    相比C和C++,Java在语法上做了很多简化和改进,例如不支持全局变量和goto语句,以增强代码的可读性和结构化。Java对指针进行了严格的控制,禁止直接的指针操作,以提高程序的安全性。同时,Java采用自动内存管理,...

    Java面试宝典2017版本高清.pdf版

    - Java语言中.goto语句的有无; - Java中逻辑运算符&和&&之间的区别; - Java中跳出多重嵌套循环的方法; - Java中switch语句能否作用于不同数据类型的变量; - Java中short类型运算时的自动类型转换问题; - Java中...

    Java面试宝典.pdf

    至于`goto`关键字,Java中并不支持,而是采用更加结构化的控制流语句如`break`和`continue`来替代。`&`和`&&`在逻辑运算中有所不同,`&`始终会计算两边的操作数,而`&&`则遵循短路逻辑,如果前一个操作数已确定结果...

    Java详细总结(精辟版++)

    Java 语言有 51 个保留关键字,其中 const 和 goto 等虽然被保留但未被使用。Java 语言没有 sizeof,因为 Java 认为 C 语言中的 sizeof 主要用于跨平台,而 Java 本身就是跨平台的。Java 中没有 unsigned,也就是说 ...

    java2023年初级面试题java概念面试题java基础面试题持续更新中

    它的语法受到了C++的影响,但相比C++,Java更强调跨平台的兼容性,不支持`goto`等低级控制语句,以增强程序的稳定性和安全性。 C++和Java的区别在于,C++是平台相关的,主要适用于系统编程,而Java是平台无关的,...

    java语言教程JAVA教程.pdf

    例如,“applet”表明了Java在早期互联网时代用于网络小程序的支持,“C/C++”表明了Java与C/C++语言的相似性和差异,“goto”关键字的提及显示了Java语言中不使用goto语句的特性,这是Java与C/C++的另一区别。...

Global site tag (gtag.js) - Google Analytics