Java编程思想简要笔记——第四章 控制执行流程

这一章都是基本的if-else, while, switch-case 操作,新东西好像就是标签机制了。有个可能需要记住的陈述句唯一一个用到逗号操作符的地方是for的控制表达式。有个作业题“吸血鬼数字”可以用来练练手。

标签机制

goto因为会把代码带到某些不期望的地方,所以被广大编程专家们诟病,Java也只是预留了这个保留字,但是没有提供这个功能。标签机制是Java语言的一种类似goto的机制,但并不完全一样,它由一个标签加冒号组成,break和continue后加标签。平时真的没用过,不过考试时却遇到过,多少了解一下吧。

lable1:
outer-Iteration {
    inner-Iteration {
        // ...
        break; // 中断内部迭代,回到外部迭代
        // ...
        continue; // 继续内部迭代
        // ...
        continue lable1; // 中断内外迭代,转到lable1处,继续迭代
        // ...
        break lable1; // 中断内外迭代,转到lable1处,不再迭代
    }
}

在抵达for循环的末尾前,递增表达式不会执行。

对上面的四种情况进行一下测试:

public class LableTest {
    private static final int BREAK = 0;
    private static final int CONTINUE = 1;
    private static final int BREAK_LABEL = 2;
    private static final int CONTINUE_LABEL = 3;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int type = scanner.nextInt();
        label1:
        for (int i = 0; i < 2; i++) {
            System.out.println("outer-iteration i=" + i);
            for (int j = 0; j < 2; j++) {
                System.out.println("inner-iteration i=" + i + " j=" + j);
                if (j == 1) {
                    switch (type) {
                        case BREAK:
                            System.out.println("break");
                            break;
                        case CONTINUE:
                            System.out.println("continue");
                            continue;
                        case BREAK_LABEL:
                            System.out.println("break lable1");
                            break label1;
                        case CONTINUE_LABEL:
                            System.out.println("continue lable1");
                            continue label1;
                        default:
                            break;
                    }
                }
            }
        }
    }
}

分别输入0-3,输出为:

Input is break
outer-iteration i=0
inner-iteration i=0 j=0
inner-iteration i=0 j=1
break
outer-iteration i=1
inner-iteration i=1 j=0
inner-iteration i=1 j=1
break
Input is continue
outer-iteration i=0
inner-iteration i=0 j=0
inner-iteration i=0 j=1
continue
outer-iteration i=1
inner-iteration i=1 j=0
inner-iteration i=1 j=1
continue
Input is break lable1
outer-iteration i=0
inner-iteration i=0 j=0
inner-iteration i=0 j=1
break lable1
Input is continue lable1
outer-iteration i=0
inner-iteration i=0 j=0
inner-iteration i=0 j=1
continue lable1
outer-iteration i=1
inner-iteration i=1 j=0
inner-iteration i=1 j=1
continue lable1
发布了20 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/kiba_zwei/article/details/104086639