Java中goto标签的使用
编写此文仅为以后可以复习。
最近在自学Java核心技术(很好的书,推荐!!),也是第一次从上面了解了goto,或许只是浅层了解。
错误之处希望大佬们给予批评与建议!!谢谢!!!
Java核心技术中就提到过:无限制的使用goto语句确实是导致错误的根源,但是有些情况下,偶尔使用goto 跳出循环 还是有益处的。
下面首先看一下不带goto标签的break语句:
while ( years <= 100 ){
balance += payment;
double interest = balance * interestRate / 100;
balance += interest;
if ( balance >= goal ) break;
years++;
}
很简单的break循环,在循环开始时,如果years > 100,或者在循环体中balance >= goal,则退出循环语句。
下面是带goto标签的break语句,请注意,标签必须放在希望跳出的最外层循环之前,并且必须紧跟一个冒号,:
Scanner in = new Scanner(System.in);
int n;
read_data:
while(. . .) //这个循环语句用标签加标签
{
. . .
for (. . .) //这个内部循环没有标记
{
System.out.print("Enter a number >= 0: ");
n = in.nextInt();
if(n < 0) //不应该发生-不能继续
break read_data;
//返回 read_data 循环
. . .
}
}
// 此语句在标记中断后立即执行
if (n < 0) // 检查不良情况
{
// 处理不良情况
}
else
{
// 进行正常加工
}
如果输入有误,通过执行带标签的break跳转到带标签的语句块末尾。对于任何使用break语句的代码都要检测循环是正常结束,还是由break跳出。
事实上,可以将标签应用到任何语句中,甚至可以应用到if语句或者块语句中,如下所示:
label:
{
. . .
if(condition) break label;// exits block
. . .
}
//当中断语句执行时跳转到这里
因此,如果希望使用一条goto语句,并将一个标签放在想要跳转的语句块之前,就可以使用break语句!当然,前面说过了Java语句中不提倡,大家了解就行。
另外,只能跳出语句块,而不能跳入语句块。
Java中goto标签的使用的更多相关文章
- Java中的标签语法(类似于C语言goto循环体)
Java中的标签语法(少用) 101到150的质数 此法类似于C语言中的GOTO循环 public static void main(String[] args) { int count=0; //标 ...
- Java中goto和break、continue实现区别
goto 关键字很早就在程序设计语言中出现.事实上,goto 是汇编语言的程序控制结构的始祖:“若条件 A,则跳到这里:否则跳到那里”.若阅读由几乎所有编译器生成的汇编代码,就会发现程序控制里包含了许 ...
- Java中带标签的break,continue
首先不带标签的break,continue 就不介绍了.大家平时用的最多的也就是这样的情况了. 首先Java中没有goto,但是可以利用带标签的break, continue来实现类似的跳转. 首先来 ...
- java中goto语句
goto是java中一个保留字,但在语言中并未使用它. goto语句起源于汇编语言的程序控制,是源码级上的跳跃,这使其招致了不好的声誉,若一个程序总是从一个地方跳转到另一个地方, 还有什么办法能识别程 ...
- Java中的标签
@SuppressWarnings 简介:java.lang.SuppressWarnings是J2SE 5.0中标准的Annotation之一.可以标注在类.字段.方法.参数.构造方法,以及局部变量 ...
- Java中利用标签跳出外层循环break
直接看代码: class ForLoop{ public static void main(String[] args){ //jump from outer loop outer:for(int i ...
- 原来java中也有类似goto语句的标签啊--java label标签
http://blog.sina.com.cn/s/blog_6d5354cd0100xjg7.html ——————————————————————————————————————————————— ...
- java中break,continue,标签实现goto效果(编程思想)
goto 编程语言中一开始就有goto关键词了.事实上,goto起源于汇编语言的程序控制:“若条件A成立,则调到这里:否则跳到那里”. goto语句时在源码级别上的跳转,这导致了其不好的名誉.于是go ...
- JAVA中的break[标签]continue[标签]用法
原文:JAVA中的break[标签]continue[标签]用法 注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句.例如:tag:for或while或do--while; 1.使用brea ...
随机推荐
- 吉比特&雷霆游戏--2020春招实习
笔试 题量较大,仅记了一些印象比较深刻的题. 题型为选择 + 填空(给C++代码填输出结果) + 编程 编程题不会太难,最难的就一道字符串的全排列(类似剑指offer第38题LeetCode链接)可以 ...
- Spring IoC component-scan 节点详解
前言 我们在了解 Spring 容器的扩展功能 (ApplicationContext) 之前,先介绍下 context:component-scan 标签的解析过程,其作用很大是注解能生效的关键所在 ...
- Pop Sequence 题解
Pop Sequence(PAT) https://www.nowcoder.com/pat/5/problem/4090 前言: PAT上一道Stack的应用题,简化版的有<信息学一本通·普及 ...
- Spring拦截器和SpringAop实现
一.拦截器 1.aop是面向切面编程,原理是java的发射技术. 2.分为三类,before.after.arround 3.springMvc为我们提供了一个适配器HandlerIntercepto ...
- 「MoreThanJava」Day2:变量、数据类型和运算符
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- Maven Jar包下载失败及解决方案
我是阿福,公众号「阿福聊编程」作者,一个在后端技术路上摸盘滚打的程序员,在进阶的路上,共勉! 文章已收录在 JavaSharing 中,包含Java技术文章,面试指南,资源分享. 明显的下载失败 具体 ...
- [Python] datetime.timedelta模块用法
python使用datetime模块timedelta实现日期时间相加: python计算明天的日期: from datetime import datetime from datetime impo ...
- linux新用户(组)的那些事
linux新用户(组)的那些事 创建新用户 groupadd bigdata //添加新用户组bigdata useradd -g bigdata es //-g:为用户组添加新用户 passwd ...
- BZOJ2200 道路与航线 题解
题目 Farmer John正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇 \((1 <= T <= 25,000)\),编号为\(1T\).这些城镇之间通过\(R ...
- 12.Clear Flags属性与天空盒
选中Hierarchy面板的摄像机,然后在右侧Inspector面板的Clear Flags属性可以找到有如下选项, SkyBox:天空盒(默认效果,让场景看着有一个天空) Solid Color:固 ...