• Java标签学习


    今天早上看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缔造者们能够加入标签这一功能,必然有着其存在的意义与价值,而且有些场景标签的确非常好用,具体要如何选择还是看我们自己

  • 相关阅读:
    AutoFac (控制反转IOC 与依赖注入DI)
    【干货】利用MVC5+EF6搭建博客系统(一)EF Code frist、实现泛型数据仓储以及业务逻辑
    Log4.Net 在Winfrom、MVC、ashx程序里的使用,ashx程序里使用异步
    触发器
    游标的使用
    sql数据库快照与恢复 规则绑定
    磁盘恢复
    修改sql数据库名称
    MVC学习笔记
    NuGet包和功能
  • 原文地址:https://www.cnblogs.com/chunyun/p/11854805.html
Copyright © 2020-2023  润新知