Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2043460
  • 博文数量: 519
  • 博客积分: 10070
  • 博客等级: 上将
  • 技术积分: 3985
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-29 14:05
个人简介

只问耕耘

文章分类

全部博文(519)

文章存档

2016年(1)

2013年(5)

2011年(46)

2010年(220)

2009年(51)

2008年(39)

2007年(141)

2006年(16)

我的朋友

分类: Java

2010-03-09 09:16:22

Java中的"goto"实现
 
Java语言中goto是保留关键字,没有goto语句,也没有任何使用goto关键字的地方。
 
Java中也可在特定情况下,通过特定的手段,来实现goto的功能。显然Java不愿意开发者随意跳转程序。下面解释两个特定:
特定情况:只有在循环体内,比如for、while语句(含do...while语句)中。
特定手段:语句标签和循环控制关键字break、continue,语法格式是:break/continue 语句标签。
 
一、break、continue和语句标签
 
1、语句标签
语句标签的语法是:标签名:
语句标签可以定义在方法体内的最后一条语句之前即可。但是语句标签实际使用的机会是与break和continue结合使用的,而break和continue是和循环语句结合使用的,因此实际上语句标签的使用也是和循环紧密结合的。
 
语句标签在被使用的情况,只能定义在循环迭代语句之前,否则编译出错!
 
因此,有意义、可使用的标签含义是:指定循环语句的标识!
 
2、break、continue语句单独使用
单独使用情况下:break语句作用是结束当前的循环迭代体,进而执行剩余的语句。
continue语句的作用是结束本次迭代过程,继续执行下一轮迭代。
 
3、break、continue语句结合语句标签的使用
为什么需要语句标签呢?
原因是因为程序可能有循环的嵌套,当多层循环嵌套时候,有时候需要一次跳出多级循环,这种情况下就需要结合语句标签才能实现此功能了。
 
带标签使用情况下:break中断并跳出标签所指定循环,continue跳转到标签指定的循环处,并继续执行该标签所指定的循环。
 
为了说明情况,看看下面的例子:
import java.util.Random;
/**
* 语句标签测试
*
* @author leizhimin 2009-7-16 11:43:08
*/
public class TestLable {
        public static void main(String[] args) {
                outer:
                for (int i = 0; i < 10; i++) {
                        System.out.println("\nouter_loop:" + i);
                        inner:
                        for (int k = 0; i < 10; k++) {
                                System.out.print(k + " ");
                                int x = new Random().nextInt(10);
                                if (x > 7) {
                                        System.out.print(" >>x == " + x + ",结束inner循环,继续迭代执行outer循环了!");
                                        continue outer;
                                }
                                if (x == 1) {
                                        System.out.print(" >>x == 1,跳出并结束整个outer和inner循环!");
                                        break outer;
                                }
                        }
                }
                System.out.println("------>>>所有循环执行完毕!");
        }
}
 
执行结果:
outer_loop:0
0 1 2 3 4 5 6 7 8 9    >>x == 8,结束inner循环,继续迭代执行outer循环了!
outer_loop:1
0 1 2 3 4 5    >>x == 9,结束inner循环,继续迭代执行outer循环了!
outer_loop:2
0 1 2 3 4 5 6 7 8 9    >>x == 8,结束inner循环,继续迭代执行outer循环了!
outer_loop:3
0 1 2 3 4    >>x == 9,结束inner循环,继续迭代执行outer循环了!
outer_loop:4
0 1 2 3 4 5 6 7 8 9 10    >>x == 8,结束inner循环,继续迭代执行outer循环了!
outer_loop:5
0    >>x == 1,跳出并结束整个outer和inner循环!------>>>所有循环执行完毕!
Process finished with exit code 0
阅读(1142) | 评论(0) | 转发(0) |
0

上一篇:Class Hashtable

下一篇:Win32汇编教程

给主人留下些什么吧!~~