break与continue关键字

1.概述

不知道大家有没有这样一种感受哈,有的时候容易混淆break语句和continue语句的用法,总是模棱两可,不敢确定自己是否使用正确了。正好,我们本篇的重点就是break和continue关键字的用法。

break与continue关键字_第1张图片

2.使用场景

Java中为啥会诞生breakcontinue关键字呢?其主要目的是用来中断流程控制语句,例如switch语句、for循环。

3.break关键字

3.1 用于switch语句

上面提到了switch语句,那么我们先来看看switch语句的用法。

String season = "Spring";
switch (season) {
case "Spring":
    System.out.println("春天花会开,鸟儿自由自在");
    break;
case "Summer":
    System.out.println("接天莲叶无穷碧,映日荷花别样红");
    break;
case "Autumn":
    System.out.println("人生若只如初见,何事秋风悲画扇");
    break;
case "Winter":
    System.out.println("孤舟蓑笠翁,独钓寒江雪");
    break;
default:
    System.out.println("原来岁月这般温柔");
    break;
}

switch语句将从与选项值相匹配的case标签处开始执行,直到遇到break语句,或者执行到switch语句的结束处为止。如果没有匹配的case标签,则会执行default语句。

可以看到,break语句在switch语句起到了中断流程的作用,试想一下,如果在case语句中没有break语句,那么就会接着执行下一个case语句,就会引发程序结果的错误。

break与continue关键字_第2张图片

好的,我们再来回顾一下,case标签支持的类型:char、byte、short、int、String。

3.2 用于循环体

1)结束当前层循环

代码示例:

List<String> seasons = List.of("Spring", "Summer", "Autumn", "Winter");
for (String season : seasons) {
    if ("Spring".equals(season)) {
        System.out.println("春天花会开,鸟儿自由自在!");
        break;
    }
    System.out.println("岁月静好");
}
// 执行结果:春天花会开,鸟儿自由自在!

以上代码的执行结果中并不会执行循环体的最后一句代码,因为当if条件成立时,就会结束当前层的循环。请注意,这里特别强调是当前层(表示break所处的这个循环体),为什么会有当前层这个说法呢?很多时候,我们在处理数据的时候,会用到嵌套循环。好的,我们来看个嵌套循环的案例:

List<String> cities = List.of("成都", "昆明");
List<String> seasons = List.of("Spring", "Summer", "Autumn", "Winter");
for (String city : cities) {
    if ("成都".equals(city)) {
        for (String season : seasons) {
            if ("Summer".equals(season)) {
                System.out.println(season + ":接天莲叶无穷碧,映日荷花别样红");
                break;
            }
        }
        System.out.println(city + ":蜀道难,难于上青天");
    }
    if ("昆明".equals(city)) {
        System.out.println(city + ",又名春城,这里四季如春");
    }
}
// 执行结果为:
// Summer:接天莲叶无穷碧,映日荷花别样红
// 成都:蜀道难,难于上青天
// 昆明,又名春城,这里四季如春

从以上代码的执行结果可以看出,break语句只是结束了它所在的循环体,并不会影响外层循环体的执行。那么有没有办法可以结束整个循环体的执行呢?解决方法肯定是有的。

2)结束整个循环

flag:
for (String city : cities) {
    if ("成都".equals(city)) {
        for (String season : seasons) {
            if ("Summer".equals(season)) {
                System.out.println(season + ":接天莲叶无穷碧,映日荷花别样红");
                break flag;
            }
        }
        System.out.println(city + ":蜀道难,难于上青天");
    }
    if ("昆明".equals(city)) {
        System.out.println(city + ",又名春城,这里四季如春");
    }
}
// 执行结果:Summer:接天莲叶无穷碧,映日荷花别样红

结束整个循环,需要配合标签来完成,在循环体前定义一个标签,格式为lable:,就可以配合break关键字来完成结束整体循环。

3.3 小结

break语句用法:

1)用在switch语句中,结束case标签语句的执行。

2)用在循环体内,表示结束当前循环。

3)配合lable:标签语法,结束定义在标签之后的循环体,可用于嵌套循环时,结束整个循环。

4.continue关键字

与break语句一样,也可以用来中断流程控制语句,break语句是结束当前循环体的执行,而continue语句是结束当前循环体中本次循环的执行,continue语句之后的剩余部分的代码不会被执行,而是直接进行下次循环。

示例代码:

List<String> seasons = List.of("Spring", "Summer", "Autumn", "Winter");
for (String season : seasons) {
    if ("Summer".equals(season)) {
        System.out.println(season + ":接天莲叶无穷碧,映日荷花别样红");
        continue;
    }
    System.out.println(season + ":岁月静好");
}
// 执行结果:
// Spring:岁月静好
// Summer:接天莲叶无穷碧,映日荷花别样红
// Autumn:岁月静好
// Winter:岁月静好

根据执行结果可以看出,continue语句之后的代码没有被执行,起到了跳过本次循环体的作用。

你可能感兴趣的:(java,java)