java中break和continue区别及使用场合分析

 更新时间:2014年01月19日 15:43:57   作者:  
本文力图通过实例加使用场合详解来引导菜鸟重新认识break和continue语句,需要的朋友可以参考下
几乎所有程序语言都有break和continue语句,可见它们的重要性,即使不重要相信也是够实用的吧。但是在真正的开发过程中,又有多少人会忽视它们的用法呢?相信初学者或者不关心程序优化的人应该对其了解的比较肤浅。本文力图通过实例加使用场合详解来引导菜鸟重新认识break和continue语句。

注意:为了方便演示,本文例子选择我喜爱的JavaScript语言,其它语言,比如C#、Java、Python等是一样的用法。

一、先看MSDN关于break和continue语句的帮助说明

1、break 语句用于终止最近的封闭循环或它所在的 switch 语句。控制传递给终止语句后面的语句(如果有的话)。

2、continue 语句将控制权传递给它所在的封闭迭代语句的下一次迭代。

二、我对break和continue语句的解释

通过对MSDN帮助的理解,我们可以得出以下结论:

1、break 语句在循环(for、for in,……)和switch等具有迭代选择特征的语句中使用,而且是终止最近的封闭代码块(即多重循环时,它只终止自己所在的循环),整体代码接在break语句后继续执行(如果break语句不是最后一行代码的话)。

2、continue语句与break语句使用场合类似,continue语句是不可以在单独的switch语句中使用,但可以在一个循环内的switch语句中使用。含有continue的迭代语句(或者叫循环语句),在遇到continue语句后,代码先不按照常规的从上往下的代码执行顺序执行,而是马上回到循环入口转入下一次循环。

3、break和continue语句在循环内的switch语句中使用时,是有些区别的。break是跳出本switch,switch后面的代码继续执行,而continue是不执行switch后的代码,可以理解为跳出循环,接着进入下一次循环。分别测试下面代码使用break和continue两种情况的输出,如果使用continue,你会发现程序找到Microsoft后,document.write代码不执行了,输出结果就比使用break少了一行。

复制代码 代码如下:

var company=new Array('Adobe','Apple','Google','Intel','Microsoft','Oracle','IBM','SUN');
for (var i in company)
{
    switch (company[i])
    {
    case 'Microsoft':
        continue;
        //break;
    }
    document.write('Me was run '+i);
}

三、break和continue语句的使用场合

1、break可以优化程序,不让程序多做些无用功。在下面的例子中,我们要从一个庞大的公司列表中找出Microsoft公司,一旦找到,就不会接着往下再找,比如下面语句用不用break是一样的效果,但用了break语句,程序运行的步骤就少了,除非要找的公司在最后面。我这里之所以强调“庞大”的列表,在于突显break优势,太少的话,也许你会认为自己用if语句就行。

复制代码 代码如下:

var company=new Array('Adobe','Apple','Google','Intel','Microsoft','Oracle','IBM','SUN');

//在数组company中从左往右(或者说从前往后)寻找Microsoft,找到后通过break语句跳出循环。
for (var i in company)
{
    if (company[i]=='Microsoft')
    {
        document.write('Find Microsoft');
        break;
    }
}

通过脚本调试工具(比如Firefox浏览器的Firebug插件)单步调试可以发现,使用了break语句,循环了五次便退出了循环。而没有使用break语句的话,循环要遍历完整个数组。



2、continue语句可以让你直接在遍历并查找符合条件的元素过程中直接处理这些符合条件的元素,而不用先找到符合条件的元素集,然后再在外面另外写方法重新遍历这些新找到的元素并做处理。试着对比以下两种实现方法,你应该明白continue的好处。

<1>不使用continue语句:

复制代码 代码如下:

var company=new Array('Adobe','Apple','Google','Intel','Microsoft','Oracle','IBM','SUN');
var findCompany=[];
for (var i in company)
{
    if (company[i]=='Microsoft'||company[i]=='IBM')
    {
        findCompany.push(company[i]);
    }
}
for (var i in findCompany)
{
    delete findCompany[i];
}

<2>使用continue语句:

复制代码 代码如下:

//演示continue语句用法,以下循环把非Microsoft和IBM的公司成员找出来删除掉。
var company=new Array('Adobe','Apple','Google','Intel','Microsoft','Oracle','IBM','SUN');
for (var i in company)
{
    if (company[i]=='Microsoft'||company[i]=='IBM')
    {
        continue;
    }
    delete company[i];
}

相关文章

  • Java Map集合使用方法全面梳理

    Java Map集合使用方法全面梳理

    Map是一种依照键(key)存储元素的容器,键(key)很像下标,在List中下标是整数。在Map中键(key)可以使任意类型的对象。Map中不能有重复的键(Key),每个键(key)都有一个对应的值(value)。一个键(key)和它对应的值构成map集合中的一个元素
    2022-04-04
  • SpringBoot实现评论回复功能(数据库设计)

    SpringBoot实现评论回复功能(数据库设计)

    这篇文章主要介绍了SpringBoot实现评论回复功能(数据库设计),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • SpringBoot使用DevTools实现后端热部署的过程详解

    SpringBoot使用DevTools实现后端热部署的过程详解

    在Spring Boot项目中,Spring Boot官方提供你了Devtools热部署模块,通过maven的方式导入就能使用,本文主要SpringBoot通过DevTools实现热部署,感兴趣的朋友一起看看吧
    2023-11-11
  • 小伙熬夜用Java重现经典超级马里奥代码实例

    小伙熬夜用Java重现经典超级马里奥代码实例

    这篇文章主要介绍了Java重现经典超级马里奥,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java深入浅出讲解多线程的概念到使用

    Java深入浅出讲解多线程的概念到使用

    哈哈!经过一个阶段的学习,Java基础知识学习终于到多线程了!Java多线程以及后面互斥锁的概念都是Java基础学习的难点,所以我做了一个总结,希望对大家也有帮助
    2022-05-05
  • java8 集合 多字段 分组 统计个数代码

    java8 集合 多字段 分组 统计个数代码

    这篇文章主要介绍了java8 集合 多字段 分组 统计个数代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • springboot访问404问题的解决办法

    springboot访问404问题的解决办法

    工作中遇到url404问题,解决问题的进程比较崎岖,写篇文章记录,下面这篇文章主要给大家介绍了关于springboot访问404问题的解决办法,文中通过图文介绍的非常详细,要的朋友可以参考下
    2023-03-03
  • Spring MVC基于注解的使用之JSON数据处理的方法

    Spring MVC基于注解的使用之JSON数据处理的方法

    这篇文章主要介绍了Spring MVC基于注解的使用JSON数据处理,json是一种轻量级的数据交换格式,是一种理想的数据交互语言,它易于阅读和编写,同时也易于机器解析和生成,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-05-05
  • ocp开闭原则_动力节点Java学院整理

    ocp开闭原则_动力节点Java学院整理

    这篇文章主要为大家详细介绍了ocp开闭原则的相关资料,ocp开闭原则指导我们如何建立一个稳定的、灵活的系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Java实现视频时间维度剪切的工具类

    Java实现视频时间维度剪切的工具类

    这篇文章主要为大家详细介绍了将视频按照时间维度进行剪切的Java工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12

最新评论