Java标签 vs goto跳转

  Java 中有 goto 关键字,但这个关键字没有任何作用,换句话说,我们不能使用 goto 来进行跳转到某行。实际上,结构化程序设计完全不需要 goto 语句即可完成各种流程,而 goto 语句的使用往往会使程序的可读性降低,所以 Java 不允许 goto 跳转。 

  Java 中同样可以定义标签,使用标识符加冒号 (:) 的形式,如“mylabel:”。不过既然 Java 中的 goto 没有实质性的作用,标签的设计当然就不是为了 goto。 

  Java 中的标签是为循环设计的,是为了在多重循环中方便的使用 break 和 coutinue 而设计的。正是由于这个原因,Java 的标签只能定义在三种循环 (for() {}, do{} while(), while() {}) 的开始位置,否则编译器会报告说找不到标签。稍后的例子即可更直观的说明。 

  在循环前面加上标签,就好像给循环起了个名字。而后在循环中使用 break 或者 continue 语句的时候,就可以带上这个标签做为参数,指明跳出 (break) 或者继续 (continue) 哪一个循环,如“break mylabel;”、“continue mylabel;”。  
/** *//** *//** *//** 
     * 演示查找过程,使用带标签的 break 和 continue 语句。 
     */ 
    public void search() ......{ 
        //loop1: 
        // 若在此处定义标签,由于不是其后紧跟循环语句,所以会被勿略掉。 
        // 被忽略掉的标签,如果在 break 或者 continue 语句中用到,编译时不能通过。 
        // 如果没有在 break 或者 continue 中用到则编译可以成功。 
        System.out.println("--- Begin Searching ---"); 
        loop1: for (int i = 0; i < row; i++) ......{ 
            for (int j = 0; j < col; j++) ......{ 
                if (data[i][j] > lookfor) ......{ 
                    System.out.println("--- JUMP ---"); 
                    continue loop1; // 想想此处用 break,结果会有什么变化 
                } 
                if (data[i][j] == lookfor) ......{
       System.out.println("FOUND: data[" + i + "][" + j + "] = " 
                            + lookfor); 
                    break loop1; // 想想此处用 return,结果会有什么变化 
                } 
                System.out 
                        .println("data[" + i + "][" + j + "] = " + data[i][j]); 
            } 
            System.out.println("--- LOOP2END ---"); 
        } 
        System.out.println("--- End Searching ---"); 
    }来源:考试大-Java认证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值