很多程序设计语言中有goto语句,goto语句的使用,使的程序变得难以读懂,尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用;Java没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子。它并不属于一次跳转,而是中断循环语句的一种方法。之所以把它们纳入goto问题中一起讨论,是由于它们使用了相同的机制:标签。

下面是一个例子,介绍一下这种标签在java中的使用。

int i = 0;

System.out.println("label1");

label1: for (int k = 0; k < 5; k++) {

i++;

if (k == 2) {

break label1;

}

System.out.println(i);

输出结果是:

label1

1

2

这说明当k=2时,执行了break语句,跳转到了label1标签处,但是并没有在进入这个for语句块。

int j = 0;

System.out.println("label2");

label2: for (int k = 0; k < 5; k++) {

j++;

if (k == 2) {

continue label2;

}

System.out.println(j);

输出结果是:

label2

1

2

4

5

这说明当k=2时,执行了continue语句,跳出了循环没有执行println语句,然后从label2标签的地方再次进入for语句块。

上面这两种情况的结果与不使用标签的,只使用break和continue的情况是相同的。因而体现不出标签的作用。

System.out.println("label3");

int h = 0;

label3: for (int k = 0; k < 5; k++) {

System.out.println("label3第一层");

for (int m = 0; m < 5; m++) {

System.out.println("label3第二层");

h++;

if (m == 2) {

break label3;

}

System.out.println(h);

}

}

输出结果是:

label3

label3 第一层

label3 第二层

1

label3 第二层

2

label3 第二层

这说明当k=m时,执行了break语句,跳转到了label3标签处,但是并没有在进入这个for语句块。

System.out.println("label4");

int l = 0;

label4: for (int k = 0; k < 5; k++) {

System.out.println("label4第一层");

for (int m = 0; m < 5; m++) {

System.out.println("label4第二层");

l++;

if (m == 2) {

continue label4;

}

System.out.println(l);

}

}

输出结果是:

label4

label4 第一层

label4 第二层

1

label4 第二层

2

label4 第二层

label4 第一层

label4 第二层

4

label4 第二层

5

label4 第二层

label4 第一层

label4 第二层

7

label4 第二层

8

label4 第二层

label4 第一层

label4 第二层

10

label4 第二层

11

label4 第二层

label4 第一层

label4 第二层

13

label4 第二层

14

label4 第二层

这说明当m=2时,执行了continue语句,跳出了循环没有执行println语句,然后从label3标签的地方再次进入for语句块。

当有多从循环的时候,程序只想跳出内层循环,而不跳出外层循环的时候就可以使用这样的break和continue标签了。这种嵌套循环也是适合while语句的。

当然你也可以写出这样的代码

label5:{

int b=0;

if(tag){

break label5;

}

......

}

用以跳过下面省略了的代码,当然这样的写法完全可以使用if else代替。

下面是对这个用法的总结:

(1) 简单的一个continue会退回最内层循环的开头(顶部),并继续执行。

(2) 带有标签的continue会到达标签的位置,并重新进入紧接在那个标签后面的循环

(3) break会中断当前循环,并移离当前标签的末尾。

(4) 带标签的break会中断当前循环,并移离由那个标签指示的循环的末尾。

java中标签怎么用_Java中标签的使用相关推荐

  1. java父类声明子类实现_java中父类声明子类实例化

    问题: 1.比如两个类父类:Person 子类 Student extends Person在使用时候,这样写:Person person=null; //声明对象person=new Student ...

  2. java的布局管理器_Java中提供了几种布局管理器

    近日,很多网友都在关注Java中提供了几种布局管理器这个话题,那么Java中提供了几种布局管理器具体情况是怎么样的呢?Java中提供了几种布局管理器的相关信息有哪些?下面的内容是小编为大家找到的关于J ...

  3. java中的流程控制_Java中的流程控制

    1.break和continue break用于强行推出循环,不执行循环中剩余的语句.continue用于停止执行当前的迭代,然后退回循环起始处,开始下一次迭代.看下面的代码: public clas ...

  4. java中组件与容器_java中的容器组件和非容器组件

    1.java使用到的图形类主要在java.awt 与javax.swing包中. 2.java.awt 与 javax.swing包的区别: ① java.awt中使用的图形类都是依赖于系统的图形库的 ...

  5. java boolean几个字节_Java中boolean类型到底占用多少个字节?

    1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...

  6. java 基本类型的引用_Java中的基本数据类型与引用数据类型

    一.基本数据类型 byte.short.int.long(整数类型) float.double(浮点数类型) char(字符型) boolean(布尔类型 ) Java数据大多数存放在堆栈中.栈区:存 ...

  7. java对于数组的定义_Java中方法的定义与使用,以及对数组的初步了解。

    方法 方法的含义 定义: 方法就是用来完成解决某件事情或实现某个功能的办法. 方法实现的过程中,会包含很多条语句用于完成某些有意义的功能--通常是处理文本,控制输入或计算数值. 我们可以通过在程序代码 ...

  8. java string 后几位_java中String占几个位元组

    java中String占几个位元组以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java中String占几个位元组 J ...

  9. java有没有回调函数_Java中的回调函数 - wangjianme的个人空间 - OSCHINA - 中文开源技术交流社区...

    Java代码的回调函数经常由框架或是系统定义,由程序开发人员填充. 它的最主要特点是即定义了调用的规范同时又非常的灵活. 回调函数有些类似于观察者模式,它们的区别在于:观察者模式返回的参数为Event ...

最新文章

  1. 为什么你老是讲不清楚js的继承模式
  2. 互联网协议 — TCP — 性能问题解析
  3. python调用系统_python 执行系统命令
  4. 一周学C#之第4天——语句
  5. kylin操作系统是什么
  6. 小米mini php,小米路由器mini刷华硕固件的教程
  7. android studio 补间动画,Android动画学习(一):帧动画和补间动画
  8. omf多路径 oracle_Oracle数据库使用OMF来简化数据文件的管理
  9. 图片风格迁移:基于实例缓解细节丢失、人脸风格化失败问题
  10. 【NOI2007】社交网络
  11. 会解方程会画图的超级计算器
  12. 【STM32】IO引脚复用器和映射原理与配置
  13. Win10如何彻底禁用小娜?彻底禁用小娜的方法
  14. 美国智能网联最新政策动态(2021年9-11月)
  15. 删除服务残留注册表_流氓软件卸载残留?不存在的!软件里的扫地僧来了~
  16. 字符串应用,expect预期交互,数组,正则表达式
  17. 她26岁成中科大博导:我是工作上灭绝师太,生活中女汉子
  18. 深圳Java培训:Java和大数据的关系
  19. CISCO asa5520 端口映射
  20. 百度凤巢助纣为虐 网游盗号百度难逃罪责

热门文章

  1. java 写一个商店_Java Web开发之基于Session的购物商店实现方法
  2. R语言使用ggplot2包使用geom_boxplot函数绘制基础分组箱图(分组箱体框颜色自定义配置)实战
  3. R语言使用ggplot2包和ggQC包可视化帕累托图(Pareto chart)
  4. R语言plyr包round_any函数将向量数据近似到任意精度实战
  5. 简要介绍一下贝叶斯定理( Bayes‘ theorem)
  6. 机器学习+优化问题的种类、如何优化、凸优化、非凸优化、对偶问题、KKT条件
  7. 服务器虚拟化集成项目投标方案,服务器虚拟化投标技术方案(纯方案,16页).doc...
  8. 数据结构与算法:算法简介
  9. 数字图像处理2:传统插值
  10. 试编写一个汇编语言程序,大写---小写 要求对键盘输入的大写字母用小写字母显示出来。