zoukankan      html  css  js  c++  java
  • Java的标签弱化的goto

    看到一道这样的java的选择题, 代码如下

     1     public static void main(String[] args) {
     2         int k = 10;
     3         for (int i = 0; i < 10; i++) {
     4             start:
     5                 System.out.print("s");
     6             if (i > 5) break;
     7             else System.out.print("g");
     8             while(k > 0) {
     9                 System.out.print("t");k--;
    10                 if (i > 3) 
    11                     break start;
    12             }
    13         }
    14     }

    给出代码输出.

    上述这道题考察了java的break和continue的标签使用.

    上述的代码是错误的, 会在编译期报错, java的label只可以用在迭代语句之前, 而且是刚好之前, 不可以插入任何语句, label只是用来控制嵌套迭代

    java编程思想中的介绍

    label1:

    outter-iteration {

      inner-iteration {

        break; // 中断内部迭代, 回到外部迭代

        continue; // 回到内部迭代的起始处

        continue label1; // 中断内部外部迭代, 跳转到label1处, 继续迭代过程, 从外部迭代开始

        break label1; // 中断所有迭代, 回到label1处, 不会重新进入迭代

      }

    }

    下面写两个简单的例子

    continue的例子

     1     public static void main(String[] args) {
     2         outter:for (int i = 0; i < 2; i++) {
     3             System.out.println("i = " + i);
     4             for (int j = 0; j < 5; j++) {
     5                 if (j > 3) {
     6                     System.out.println("continue outter");
     7                     continue outter;
     8                 }
     9                 System.out.println("j = " + j);
    10             }
    11         }
    12     }

    输出结果为

    i = 0
    j = 0
    j = 1
    j = 2
    j = 3
    continue outter
    i = 1
    j = 0
    j = 1
    j = 2
    j = 3
    continue outter

    break的例子

     1     public static void main(String[] args) {
     2         outter:for (int i = 0; i < 2; i++) {
     3             System.out.println("i = " + i);
     4             for (int j = 0; j < 5; j++) {
     5                 if (j > 3) {
     6                     System.out.println("break outter");
     7                     break outter;
     8                 }
     9                 System.out.println("j = " + j);
    10             }
    11         }
    12     }

    输出结果为

    i = 0
    j = 0
    j = 1
    j = 2
    j = 3
    break outter

    我们可以看到, break label之后就不会再执行外部迭代了.

    参考:

    1. java中的标签: http://blog.sina.com.cn/s/blog_7d528cb70100qecf.html
    2. Java中带标签的break的用法: http://blog.csdn.net/moonwalkings/article/details/4631988
    3. <Java编程思想>
  • 相关阅读:
    系统架构师学习笔记_第十一章(下)
    通过IronRuby和C#学习RUBY系列[0]
    TIPS to comment your code
    超级简单:DIV布局
    js 查询XML数据添加到HTML select控件
    《架构之美》读书笔记(一)
    18个不常见的C#关键字,您使用过几个?
    如何成为人尽皆知的C#开发人员
    实现Visual Studio 2010一个很简单的很酷的扩展
    一种简单的直观的高效的权限设计
  • 原文地址:https://www.cnblogs.com/icejoywoo/p/2740005.html
Copyright © 2011-2022 走看看