优化for循环

写代码不仅是一种技术活!更可以体现艺术范!!!

==================================================================

1.for()循环在众多编程语言中都有着不可替代的地位,并且在各种语言中的语法规范一致:

   for(option1; option2; option3) {

     //code body

   }

2.那么如何使得自己的编写的for()循环更具有效率呢?????

  2.1.例子(以Java语言为例):使用for()循环遍历数组,且将数组中的元素打印到控制台

  2.2.一般的(也是大众的)做法如下:

     

public class Test {
    public static void main(String[] args) {
        int[] arrs = {2,1,3,4,5,6,9};
        for(int i=0; i<arrs.length; i++) {
            System.out.println(arrs[i]);
        }
    } 
}
遍历数组

3.for()循环分析:效率问题出现在循环语句的第二个条件上------->i<arrs.length;当循环每执行一次时"i<arrs.length"条件其实执行了两部分,第一部分是计算arrs.length,第二部分才是循环所真正需要的比较语句即:i < arrs.length;所以每次顺带执行arrs.length是一个多余的步骤,试想当一个数组或者容器很大时,反复计算它的大小是一项艰巨的任务,且降低了程序的效率;其实数组或者容器的大小只需计算一次即可。

4.小结:我们在写for()时,无意间就写出了冗余的,效率低下的程序!!!

5.解决之道:让计算容器的大小操作只出现一次!

6.情况一:好的!那么你此时茅塞顿开,你也许会这样想:

public class Test {
    public static void main(String args) {
            int[] arrs = {1,2,3,4,5,6};      
            int arrsLength = arrs.length;
            for(int i=0; i<arrsLength; i++) {
                Systm.out.println(arrs[i]);
            }       
    }
}
情况一

   6.1.在方法内定义一个变量来获取arrs.length,这样看似没问题,但是当这个方法内只有循环语句内要使用到arrs.length时,定义一个变量arrsLength来获取arrs.length又不合理(规则:尽量不要定义全局的变量)

7.情况二:貌似还有一种更好的解决方案

 

public class Test {
    public static void main() {
            int[] arrs = {1,2,3,4,5};
            for(int i=0, arrsLength=arrs.length; i<arrsLength; i++) {
                System.out.println(arrs[i]);
            }
    }
}
最终版

  7.1这样做的好处在于:1.避免了过多定义全局变量2.只在初识化时计算了一次容器大小,提高了效率

总结:代码是值得品味的!做一个优雅的码农!!!

posted @ 2014-02-12 12:50  拂柳  阅读(1011)  评论(0编辑  收藏  举报