I want to fly higher
          programming Explorer
          posts - 114,comments - 263,trackbacks - 0
              周五那天去同事那問一個(gè)問題,看他正在寫代碼。突然的發(fā)現(xiàn)在類變量初始化那里這樣一行代碼:
              
          1int[] exp = new int[]{};

              乍一看,覺得很不順眼,因?yàn)樽约簭膩矶紱]有這樣用過,覺得很不適應(yīng)。后來回去翻閱了一些書籍,發(fā)現(xiàn)自己真的有很多基礎(chǔ)的東西都忘掉了。
              數(shù)組初始化,你覺得簡(jiǎn)單嗎?

              a.如果你覺得簡(jiǎn)單,那請(qǐng)看下面的代碼:
          1int[] a = new int[0];
          2    int[] b = new int[]{};
          3    int[] c = {};

              你覺得這三種方式,你熟悉嗎?它們的作用一樣嗎?哈哈,其實(shí),三種效果是一樣的。如果輸出的話,a,b,c的長(zhǎng)度都是0。大家也許可能最熟悉下面這種初始化方式:
              
          1int[] d = {1,2,3,4,5};
          2 for(int temp : d)
          3 {
          4 System.out.println(temp);
          5 }

          6

                  當(dāng)然這種方式:
              int[] e = new int[]{1,2,3,4,5},估計(jì)也有很多人知道,但是卻不一定常用。不過這種方式卻很重要,因?yàn)槿绻?dāng)調(diào)用一個(gè)方法的時(shí)候,該方法的形參是一個(gè)整型數(shù)組,這時(shí)你傳實(shí)參的話,會(huì)怎么傳?譬如說:有一個(gè)方法:
          initialArray(int[] array),你會(huì)怎么傳參數(shù)呢?有三種選擇:
              A.initialArray({1,2,3,4,5})
              B.initialArray(1,2,3,4,5);
              C.initialArray(new int[]{1,2,3,4,5})
              如果你答對(duì)了,那么恭喜你。答案就是C。第一種方式,只能用來數(shù)組初始化的且只是這種情況,而不能傳參。當(dāng)然編譯會(huì)出錯(cuò)。第二種方式就更不對(duì)了。不過后面我會(huì)講到如果改變一下initialArray方法的參數(shù)形式的話,就對(duì)了。只有C是正確的答案。
              上面介紹的是基本類型數(shù)組的初始化,對(duì)象數(shù)組初始化其實(shí)也一樣。比如說,String數(shù)組初始化:
              String[] strArray = {"kobe","tmac"}或者String[] strArray = new String[]{"kobe","tmac"};當(dāng)然這里String比較特殊,可以用字符串直接初始化。
              當(dāng)然,我說的不是這種:
              Integer[] integerArray = new Integer[3];這只是申請(qǐng)了3個(gè)引用的空間而已。我說的是Integer[] integerArray = new Integer[]{1,2,3}這樣的初始化。當(dāng)然這里Integer也比較特殊,因?yàn)楝F(xiàn)在早已經(jīng)可以自動(dòng)裝包/拆包了。

              b.你經(jīng)常使用新的可變參數(shù)列表形式嗎?
              比如說,你現(xiàn)在寫main函數(shù)的參數(shù)是main(String[] args)還是main(String...args),我覺得很多人仍然會(huì)用第一種形式。我個(gè)人還是非常喜歡新的可變參數(shù)列表形式的。比如說上面的一個(gè)例子,我如果把initialArray放的參數(shù)形式改一下,即
          initialArray(int...args),下面?zhèn)鲗?shí)參的時(shí)候,你會(huì)怎么選擇呢,我還是給出上面的三個(gè)選項(xiàng),再加上一個(gè)D
               A.initialArray({1,2,3,4,5})
               B.initialArray(1,2,3,4,5);
               C.initialArray(new int[]{1,2,3,4,5})
               D.initialArray();
                改成這樣的話,正確答案就有三個(gè)了。B,C,D均為正確答案
                使用新的可變參數(shù)里列表形式是非常靈活的,可以都不傳參數(shù);當(dāng)然它也有弊端,比如重載的時(shí)候,可能會(huì)模棱兩可。

              其實(shí),寫了這么多,主要想表達(dá)的意思是:基礎(chǔ)真的很重要。引用創(chuàng)新工廠首席架構(gòu)師蔡學(xué)鏞微博上的一句話:

          優(yōu)秀的程序員靠的是扎實(shí)的基礎(chǔ)訓(xùn)練+靈活的思考能力+搜索引擎;次級(jí)的程序員靠的是過去的經(jīng)驗(yàn)+搜索引擎;最差的程序員只靠搜索引擎。可見扎實(shí)的基礎(chǔ)訓(xùn)練是一個(gè)優(yōu)秀程序員的必備條件。共勉。

          posted on 2011-01-09 17:30 landon 閱讀(5249) 評(píng)論(10)  編輯  收藏 所屬分類: Program

          FeedBack:
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?
          2011-01-10 08:55 | scelong
          呵呵,搞了這么久都是喜歡new int[]{}這種類型!  回復(fù)  更多評(píng)論
            
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?
          2011-01-10 12:26 | 610622106
          很不錯(cuò),值得學(xué)習(xí),支持!  回復(fù)  更多評(píng)論
            
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?
          2011-01-10 20:54 | landonlv
          嗯,這種方式很不錯(cuò)。哈哈@scelong
            回復(fù)  更多評(píng)論
            
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?
          2011-01-10 20:54 | landonlv
          恩,比較基礎(chǔ)的東西。互相學(xué)習(xí)@610622106
            回復(fù)  更多評(píng)論
            
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?
          2011-01-11 12:07 | 打底褲
          學(xué)習(xí)學(xué)習(xí)  回復(fù)  更多評(píng)論
            
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?[未登錄]
          2011-01-13 16:53 | owen
          我也比較喜歡new int[]{1,2,3,4}這種寫法,

          int[] a = new int[0];
          int[] b = new int[]{};
          int[] c = {};

          不熟悉第三種,不明白這樣寫有什么用,就僅僅是定義整形數(shù)組嗎?


            回復(fù)  更多評(píng)論
            
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?
          2011-01-13 22:03 | landonlv
          哈哈。thanks@打底褲
            回復(fù)  更多評(píng)論
            
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?
          2011-01-13 22:05 | landonlv
          這種形式幾乎很少用,僅僅是為了證明語(yǔ)法是正確的,且可以這樣寫。@owen
            回復(fù)  更多評(píng)論
            
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?
          2011-01-14 16:53 | David Gao
          講解很到位,分享了:)  回復(fù)  更多評(píng)論
            
          # re: 數(shù)組初始化,你覺得簡(jiǎn)單嗎?
          2011-01-15 22:25 | landonlv
          謝謝,我很欣慰。@David Gao
            回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 虞城县| 赤壁市| 恩平市| 郎溪县| 漳平市| 宿迁市| 屏边| 昭觉县| 南丰县| 宜宾县| 开封县| 盱眙县| 拉萨市| 昆明市| 镇平县| 江阴市| 车致| 元氏县| 玛曲县| 阿瓦提县| 静海县| 宿州市| 五大连池市| 五华县| 新昌县| 禄劝| 鲁山县| 东乌| 镇远县| 宁津县| 五寨县| 聂荣县| 沿河| 建瓯市| 宣恩县| 凤翔县| 比如县| 任丘市| 怀来县| 凌海市| 亳州市|