zoukankan      html  css  js  c++  java
  • 关于使用for循环

    有人喜欢使用for作类似while的循环:

    for(;;) { }

    评论:这是一种风格,有一部分人使用,我个人觉得不如while来得直观。

    究竟是++i,还是i++

    for (int i = 0; i < arrayA.Length; ++i) { }

    for (int i = 0; i < arrayA.Length; i++{ }

    以前我使用i++的写法,后来,看到一些优秀的代码中,大多使用++i,我就改用++i了。为什么使用++i,看到过一些理由,但觉得那些理由,不值一提。

    使用i, j, k作多层循环

    for (int i = 0; i < arrayA.Length; ++i) 
    {
      Object[] arrayB 
    = arrayA[i];
        
    for (int j = 0; j < arrayB.Length; ++j)
        
    {
            Object b 
    = arrayB[j]; //此处需要多加注意,一不留神就会写成Object b = arrayB[i];
        }
     
    }

    使用i, j, k做多层循环时,很容易犯错误,如上述代码中的注释缩写的那样。我参加的代码评审(Code Review)中,或者开发过程中,经常有同事遇到这种BUG。我也曾经吃过亏,每次编写i, j, k多层for循环时,就会提醒自己,小心,别犯错误!

    使用for的习惯,除了++i和i++的写法不同外,还有和if、while等语句一样的不同写法,如下:

    第一种写法
    a、关键字for后面有空格
    b、二元表达式左右有空格
    c、每个大括号,单独占一行
    d、else关键字单独占一行

    for (int i = 0; i < list.Count; ++i)
    {
    }


    第二种写法:
    a、关键字if后面有空格
    b、二元表达式左右有空格
    c、大括号放在上一句的右边

    for (int i = 0; i < list.Count; ++i) {
    }


    需要优化是,可能你也会采用这种写法:

    int listCount = list.Count;
    for (int i = 0; i < listCount; ++i) { }

    如果for循环中,不会添加或者删除list的元素,使用这种方式优化,可能得到一丁点(可能不值一提)的性能提升。

    需要从list中删除元素时,可能你会使用反序的遍历。如下:

    int listCount = list.Count;
    for (int i = listCount - 1; i >= 0--i) 
    {
        
    if (condition) 
        
    {
            list.RemoveAt(i);
        }

    }

    如果list的实现是ArrayList,反序遍历可能比正序删除的性能更高一些。

    此外,for还有一些其他的使用方式,如:

    for (init(); condition(); incement()) { }
    for (; i < j; ++i, --j) { };
  • 相关阅读:
    Linux 查看dns运行状态
    Linux 查看网卡流量、网络端口
    Linux 查看磁盘读写速度IO使用情况
    Linux 查看系统状态
    Linux 查看进程
    Python RabbitMQ RPC实现
    [转]轻量级 Java Web 框架架构设计
    java集合总结【转】
    java 线程
    Geoserver基本使用、WMS服务发布与OpenLayers测试
  • 原文地址:https://www.cnblogs.com/jobs/p/26691.html
Copyright © 2011-2022 走看看