深度解析continue,break和return

continue,break和return是Java中的关键字,在流程控制中使用频率较高。

在使用中,经常会有同学在使用中产生混淆,从而一系列bug。

在这里,我通过Java编程为大家解析三者在实际使用中的区别。

1.continue

通常出现在程序循环控制结构中,表示结束本次循环,若后续还有循环,则继续进行后面的循环。举例:

class Demo1 {//声明一个类Demo1
  public static void main(String[] args) {//入口函数
    for(int i=0;i<5;i++){//for循环
      if(i==3){//当i=3时,仅结束本次循环,但是for循环剩余次数并未结束
        continue;
      }
    System.out.println(i);//在控制台打印输出循环遍历的数字
    }
    System.out.println("for循环之后");
  }
}

在控制台打印输出如下:  

0
1
2
4
for循环之后

可见,当i=3时,仅结束本次循环,for循环剩下的次数并未结束;同时,for循环之后的语句可以正常执行,比如控制台打印输出“for循环之后”。

我们再来看break。

2.break

我们还用上面的代码,不同的是将continue改为break。  

class Demo2 {//声明一个类Demo2
  public static void main(String[] args) {//入口函数
    for(int i=0;i<5;i++){//for循环
      if(i==3){//当i=3时,结束for循环
        break;
      }
    System.out.println(i);//在控制台打印输出循环遍历的数字
    }
    System.out.println("for循环之后");
  }
}

  控制台打印输出结果是:  

0
1
2
for循环之后

可见,当i=3时,for循环结束,不再执行剩余的循环,同时继续执行for循环之后的语句(如打印输出“for循环之后”)。

上面是一层or循环,如果在两层for循环中使用break会怎样呢?请看下面的代码: 

public class Demo3 {
  public static void main(String[] args) {//入口函数
    for(int i=0;i<3;i++){//外层for循环
      for(int j=0;j<5;j++){//内层for循环
        if(j==4){//当j=3时,结束内层for循环
          break;
        }
        System.out.println(j);//在控制台打印输出循环遍历的数字
      }
      System.out.println("*********");//一轮内层for循环结束时的分隔符
    }
    System.out.println("for循环之后");
  }
}

 控制台打印输出结果是:

0
1
2
3
*********
0
1
2
3
*********
0
1
2
3
*********
for循环之后

  可见,在两层for循环中,break只是结束了所在层的for循环(即内层for循环),并未结束外层for循环。那么,改为return会怎样呢?

  3.return

  我们先来看下面的代码:  

class Demo4 {//声明一个类Demo4
  public static void main(String[] args) {//入口函数
    for(int i=0;i<3;i++){//外层for循环
      for(int j=0;j<5;j++){//内层for循环
        if(j==4){//当i=3时,结束方法
          return;
        }
        System.out.println(j);//在控制台打印输出循环遍历的数字
      }
      System.out.println("*********");//一轮内层for循环结束时的分隔符
    }
    System.out.println("for循环之后");
  }
}

控制台打印输出为:  

0
1
2
3

可见,使用return后,整个方法结束。

最后做下总结:

在循环控制语句中,continue仅结束本次循环;break结束本重循环;return结束当前方法。

希望能帮到您!

原文地址:https://www.cnblogs.com/lizhangyong/p/7866545.html