日拱一卒:循环体内的switch

1. 关于 break 和 continue

@Test
public void forContinue() {
    ArrayList strings = Lists.newArrayList("1", "11", "111", "1111");
    for (String string : strings) {
        switch (string) {
            case "11":
                System.out.println("break, String=" + string);
                // break 只终止switch,并不会终止for循环
                break;
            case "111":
                System.out.println("continue, string=" + string);
                // continue 不止跳出switch,还跳过本次for循环
                continue;
            default:
                System.out.println("default, String=" + string);
        }
        System.out.println("forEach: " + string);
    }
}

打印结果:

default, String=1
forEach: 1
break, String=11
forEach: 11
continue, string=111
default, String=1111
forEach: 1111

2. 复杂一点的示例

@Test
public void forSwitch() {

    String str = "111";
    String state = "READ";

    ArrayList strings = Lists.newArrayList("1", "11", "111", "1111");
    for (String string : strings) {
        switch (state) {
            case "READ":
                if (str == "PREFIX_ESCAPE") {
                    state = "ESCAPE";
                    System.out.println("READ_TO_ESCAPE done, string=" + string);
                    break;
                } else if (str.equals(string)) {
                    state = "SPLIT";
                    System.out.println("READ_TO_SPLIT done, string=" + string);
                    continue;
                }
                System.out.println("READ_do_something, string=" + string);
                break;
            case "SPLIT":
                state = "READ";
                System.out.println("SPLIT done, string=" + string);
                break;
            case "ESCAPE":
                state = "READ";
                System.out.println("ESCAPE done, string=" + string);
                break;
        }
        System.out.println("forEach: " + string);
    }
}

打印结果:

READ_do_something, string=1
forEach: 1
READ_do_something, string=11
forEach: 11
READ_TO_SPLIT done, string=111
SPLIT done, string=1111
forEach: 1111

【信息由网络或者个人提供,如有涉及版权请联系COOY资源网邮箱处理】

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容