優化for循環

寫代碼不只是一種技術活!更能夠體現藝術範!!!編程

==================================================================數組

1.for()循環在衆多編程語言中都有着不可替代的地位,而且在各類語言中的語法規範一致:編程語言

   for(option1; option2; option3) {ide

     //code bodyspa

   }code

2.那麼如何使得本身的編寫的for()循環更具備效率呢?????blog

  2.1.例子(以Java語言爲例):使用for()循環遍歷數組,且將數組中的元素打印到控制檯io

  2.2.通常的(也是大衆的)作法以下:event

     

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是一個多餘的步驟,試想當一個數組或者容器很大時,反覆計算它的大小是一項艱鉅的任務,且下降了程序的效率;其實數組或者容器的大小隻需計算一次便可。class

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.只在初識化時計算了一次容器大小,提升了效率

總結:代碼是值得品味的!作一個優雅的碼農!!!

相關文章
相關標籤/搜索