很多程序设计语言中有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自定义标签java自定义标签java自定义标签java自定义标签java自定义标签
Java架包Java标签架包
java自定义标签java自定义标签java自定义标签java自定义标签java自定义标签java自定义标签java自定义标签java自定义标签
java标签库
java 自带的jsp标签核心库,部分日期格式化标签 数字格式化标签
java web 标签技术 流行标签技术介绍 自定义标签教程
Java开发斑马打印机打印标签,支持中文打印,导入即可运行
java自定义标签教程
实用的Java分页标签,实用的Java分页标签,实用的Java分页标签
java代码,从image标签中正则匹配取出src标签的内容,java代码,从image标签中正则匹配取出src标签的内容
java语言,根据办公软件word中标签的位置, 写入相应数据字段。java操作word。
java webHTML标签内容文档文件
java web 标签大全
利用java标签组件,将图片显示在窗口中,也可以设置为背景。
各种java文本标签api 文档 查找使用
java 自定义标签 简单实例
包含了JAVA 标签库中所有标签 有每个标签的说明 及其用法! 是JAVA标签的标准API 希望对你有帮助
叫你java中自定义标签的使用方法,简单的很,让你轻松掌握
各种jsf标签Java语言各种jsf标签Java语言各种jsf标签Java语言各种jsf标签Java语言
│ TSCLIB.DLL 函数库使用说明.pdf │ TSPL2指令集(中文版).pdf │ └─src └─org └─kwok ├─test │ TestTscPrinter.java │ └─util TscLibDll.java 3、本代码遵循 Apache Licence。