美文网首页
java控制循环结构,break、continue、return

java控制循环结构,break、continue、return

作者: zivxia | 来源:发表于2021-07-01 22:53 被阅读0次

    java提供了break和continue来控制循环结构。除此之外,还提供了return来结束整个方法,当然也就结束了一次循环。

    使用break结束循环

    某些时候需要在某种条件下强行终止循环,而不是等到循环条件为false时才退出循环。此时,可以使用break来完成这一动作。break用于完全结束一个(一层)循环,跳出循环体。不管是哪种循环,一旦在循环体中遇到break,系统将完全结束该循环,开始执行循环之后的代码。实例如下:

    public class BreakTest {
    
        public static void main(String args[]) {
    
            // 一个简单的测试break的for循环
            for (int i = 0; i < 3; i++) {
    
                System.out.println("i 的值为: " + i);
                if (i == 1) {
                    break;
                }
            }
        }
    }
    

    最后输出为:

    i 的值为: 0
    i 的值为: 1
    

    当i的值为1时,遇到break,则跳出该循环。break语句不仅可以跳出其所在的循环,还能直接结束其外层的循环。此时需要在break后紧跟一个标签,这个标签用于标识外层循环。java中的标签就是一个紧跟这英文冒号(:)的标识符。与其他语言不同的时,java中的标签只有放在循环语句之前才有作用。例如下列代码:

    public class BreakTest {
    
        public static void main(String args[]) {
    
            outer:
            for (int j = 0; j < 3; j++) {
                System.out.println("j 的值为: " + j);
                for (int i = 0; i < 3; i++) {
    
                    System.out.println("i 的值为: " + i);
                    if (i == 1) {
                        break outer;
                    }
                }
            }
    
        }
    }
    

    运行结果为:

    j 的值为: 0
    i 的值为: 0
    i 的值为: 1
    

    程序从外层循环进入内层循环后,当i==1时,程序就遇到了一个break outer;语句,这行代码就会导致结束break标签指定的循环,不是结束break所在的循环。而是结束break循环的外层循环,所以看到上面的运行结果。
    值得指出的是,break后的标签必须是一个有效的的标签,即这个标签必须在break语句所在的循环之前定义,或者在其所在循环的外层循环之前定义,当然如果把这个标签放在所在循环之前定义,也就失去了标签的意义,以为break默认就是结束其所在的循环。

    使用continue忽略本次循环剩下的语句

    continue的功能和break有点类似,区别是continue知识忽略本次循环剩下的语句,接着执行下一次循环,并不会终止循环;而break则是完全终止循环本身。如下程序示范了continue的用法。

    public class continueTest {
    
        public static void main(String args[]) {
    
            for (int i = 0; i < 3; i++) {
    
                if (i == 1) {
                    continue;
                }
    
                System.out.println("i 的值为: " + i);
    
            }
        }
    
    }
    

    执行结果为:

    i 的值为: 0
    i 的值为: 2
    

    从上面运行结果来看,当i==1时,遇到continue语句,则忽略剩下的语句,继续执行下一次循环。所以得此结果。如果把一个continue语句放在单次循环的最后一句,这个continue语句是没有任何意义的-因为它仅仅忽略的时一个空白,没有忽略任何有效的语句。
    与break语句类似的是,continue后也可以紧跟一个标签,用于直接跳过过标签所标识循环的当次循环的剩下语句,重新开始下一次循环,例如下面代码:

    public class continueTest {
    
        public static void main(String args[]) {
            outer:
            for (int j = 0; j < 3; j++) {
                System.out.println("j 的值为: " + j);
                for (int i = 0; i < 3; i++) {
    
                    System.out.println("i 的值为: " + i);
                    if (i == 1) {
                        continue outer;
                    }
                }
            }
    
        }
    
    }
    

    运行结果为:

    j 的值为: 0
    i 的值为: 0
    i 的值为: 1
    j 的值为: 1
    i 的值为: 0
    i 的值为: 1
    j 的值为: 2
    i 的值为: 0
    i 的值为: 1
    

    从上面结果可以知道,循环变量i将无法超过1,每当i等于1时,continue outer;语句就结束了外层循环的档次循环。直接开始下一次循环,内层循环当然就没机会执行完成。
    与break类似的是,continue狗的标签也必须是一个有效的标签,即这个标签通常应该放在continue所在循环的外层循环之前定义。

    使用return结束方法

    return关键字并不是专门用于结束循环的,renturn的功能就是结束一个方法的,当一个方法执行到return 语句,这个方法就会结束,循环自然也随之结束。不管这个循环有多少层。

    相关文章

      网友评论

          本文标题:java控制循环结构,break、continue、return

          本文链接:https://www.haomeiwen.com/subject/ahisultx.html