今天早上看Java编程思想第四章控制执行流程,本来很简单的一些东西,但是突然看到了goto发现自己以前还真的没怎么用过,不过Java中对goto作为保留关键字,而是提供了一个叫标签的东西,我们一起来看一下这个有什么用,先解释,在代码

 1label1:
2外循环入口
3{
4  内循环入口
5    {
6    break;  //(1)
7    continue; //(2)
8    continue label; //(3)
9    break label; //(4)
10    }
11}

(1)break中断内部迭代,回到外部迭代。
(2)continue使执行点移回内部迭代的起始处。
(3)continue label同时中断内部迭代及外部迭代,直接转到label处,随后,它实际上是继续迭代过程,但却从外部迭代开始。
(4)break label也会中断所有迭代,回到label处,但并不从新进入循环,即实际上是完全中止了两个迭代。

下面是我做的实验,感兴趣自己运行一下很简单, 学习就是要多动手

 1private static void test1() {
2        System.out.println("=======start=======");
3        lab:
4        for (int i = 0; i < 3; i++) {
5            for (int j = 0; j < 3; j++) {
6                System.out.println(String.format("---- %s --- %s ---", i, j));
7//                continue;
8//                break;
9//                continue lab;
10//                break lab;
11            }
12        }
13        System.out.println("=======end=======");
14    }
15
16"-------------------- 各情况下运行结果 --------------------"
17
18//不加任何结束指令
19=======start=======
20---- 0 --- 0 ---
21---- 0 --- 1 ---
22---- 0 --- 2 ---
23---- 1 --- 0 ---
24---- 1 --- 1 ---
25---- 1 --- 2 ---
26---- 2 --- 0 ---
27---- 2 --- 1 ---
28---- 2 --- 2 ---
29=======end=======
30
31//continue;
32=======start=======
33---- 0 --- 0 ---
34---- 0 --- 1 ---
35---- 0 --- 2 ---
36---- 1 --- 0 ---
37---- 1 --- 1 ---
38---- 1 --- 2 ---
39---- 2 --- 0 ---
40---- 2 --- 1 ---
41---- 2 --- 2 ---
42=======end=======
43
44//break;
45=======start=======
46---- 0 --- 0 ---
47---- 1 --- 0 ---
48---- 2 --- 0 ---
49=======end=======
50
51//continue lab;
52=======start=======
53---- 0 --- 0 ---
54---- 1 --- 0 ---
55---- 2 --- 0 ---
56=======end=======
57
58//break lab;
59=======start=======
60---- 0 --- 0 ---
61=======end=======

总结:是否与你预想中一样,要是不一样也没关系,现在学习起来记住它就OK了。
首先我们可以看到其实加不加continue都一样,其实不一样,我们正常开发的时候是会有判断的符合条件的直接终止当次循环,相信大家也一定明白,不明白要多敲几遍就好了。
其次我们也会发现 break 和 continue lab 功能是一样的,其实也不然,如果是三层循环呢,那结果可就不一样了,所以一定要多想多做,因为有特殊情况

最后我想说,其实在多层的循环中有这样复杂的需求标签也还是很好用的,当然我看网上也有好多人说不要用标签,我个人认为,Java缔造者们能够加入标签这一功能,必然有着其存在的意义与价值,而且有些场景标签的确非常好用,具体要如何选择还是看我们自己

Java标签学习的更多相关文章

  1. java struts2入门学习--OGNL语言常用符号和常用标签学习

    一.OGNL常用符号(接上一篇文章): 1.#号 1)<s:property value="#request.username"/> 作用于struts2的域对象,而不 ...

  2. java 标签库(核心,xml,sql ,国际化,函数)

    java标签库分分为上述几种,一般经常使用的是核心和函数,接下来会分别讲解这几种,和常见的用法. 一般标签库会和el表达式一起使用,所以在学习标签库前最后也学习下el表达式的使用. 导入后展开 可以从 ...

  3. Java web 学习之旅

    java web学习之旅 来公司十天了,感觉已经慢慢地融入了这个环境中,几个学长人都很好,都是在他们帮助下,我才能比较顺利的开始了学习java web的旅途. 来这里学习的第一个阶段是做一个简单的用户 ...

  4. [原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. [原创]java WEB学习笔记66:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) 使用 paramsPrepareParamsStack 重构代码 ,PrepareInterceptor拦截器,paramsPrepareParamsStack 拦截器栈

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  6. Android(java)学习笔记206:利用开源SmartImageView优化网易新闻RSS客户端

    1.我们自己编写的SmartImageView会有很多漏洞,但是我们幸运的可以在网上利用开源项目的,开源项目中有很多成熟的代码,比如SmartImageView都编写的很成熟的 国内我们经常用到htt ...

  7. Android(java)学习笔记205:网易新闻RSS客户端应用编写逻辑过程

    1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,bl ...

  8. Android(java)学习笔记204:自定义SmartImageView(继承自ImageView,扩展功能为自动获取网络路径图片)

    1.有时候Android系统配置的UI控件,不能满足我们的需求,Android开发做到了一定程度,多少都会用到自定义控件,一方面是更加灵活,另一方面在大数据量的情况下自定义控件的效率比写布局文件更高. ...

  9. Java工程师学习指南 初级篇

    Java工程师学习指南 初级篇 最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好.原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都 ...

随机推荐

  1. httpclient: Content-Length header already present问题

    现象:用httpclient发送http请求时,客户端返回: org.apache.http.client.ClientProtocolException at org.apache.http.imp ...

  2. 免费开源3D模型设计软件汇总

    免费开源3D模型设计软件汇总 3D 打印需要先通过计算机辅助设计(CAD)进行建模,再将建好的3D模型“分割”成逐层的截面,从而指导3D打印机进行逐层打印.因此用于3D打印的3D模 型大都储存或输出成 ...

  3. JavaScript数据类型总结

    1.  六种简单数据类型:Undefined.Null.Boolean.Number.String.Symbol(新增): 一种复杂数据类型:Object: (1)基本数据类型保存在栈内存中,是按值传 ...

  4. BAT 脚本判断当前系统是 x86 还是 x64 系统

    本文告诉大家在写 BAT 脚本的时候,如何判断当前的系统是 32 位系统的还是 64 位系统 通过注册表进行判断方法 @echo OFF reg Query "HKLM\Hardware\D ...

  5. Linux 内核类设备

    一个类的真正目的是作为一个是该类成员的设备的容器. 一个成员由 struct class_device 来表示: struct class_device { struct kobject kobj; ...

  6. linux PCI 接口

    尽管许多计算机用户认为 PCI 是一种电路布线方法, 实际上它是一套完整的规格, 定义 了一个计算机的不同部分应当如何交互. PCI 规范涉及和计算机接口相关的大部分问题. 我们不会在这里涵盖全部; ...

  7. 【hdu 1849】Rabbit and Grass

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  8. codeforces 161D 点分治

    传送门:https://codeforces.com/problemset/problem/161/D 题意: 求树上点对距离恰好为k的点对个数 题解: 与poj1741相似 把点分治的模板改一下即可 ...

  9. 16python的map函数,filter函数,reduce函数

    map num_l = [1,6,8,9] def map_test(func,array): ret = [] for i in array: res = func(i) ret.append(re ...

  10. flutter 安装环境 Mac

    1.这是我第二次mac 安装 flutter环境了,但是这种东西记不住.打开写一下 有用的东西 一. ls vi 等命令 command not found原因是因为环境变量的问题,编辑profile ...