幻境
          We are extremely fortunate not to know precisely the kind of world we live in
          posts - 22,comments - 39,trackbacks - 0

          變長參數(shù)(Varargs

          與泛型一樣,變長參數(shù)是C++中有而Java中沒有的一種語言特性,在過去如果我們想向一個函數(shù)傳遞可變數(shù)量的函數(shù),就必須首先將這些參數(shù)放入一個數(shù)組中,然后將數(shù)組傳遞給函數(shù)。就如同下面所作的一樣:

          Object[] arguments = { 640, "kb", "anybody", "Bill Gates" };

          String result = MessageFormat.format(

                             "{3}:{0,number,integer}{1} ought to be enough for {2}  ",

                             arguments);

           

          J2SE5.0中,參數(shù)仍然是被放入一個數(shù)組中傳給對應(yīng)的方法,但是不同的是,你不再需要手動的創(chuàng)建數(shù)組,而是只需要將那些參數(shù)羅列出來,其他的工作由虛擬機替你完成。所以現(xiàn)在我們可以這樣寫:

          String result = MessageFormat.format(

                                               "{3}:{0,number,integer}{1} ought to be enough for {2}  ",

                                               640, "kb", "anybody", "Bill Gates");

           

          我們通過一個示例函數(shù)來說明使用變長參數(shù)函數(shù)的定義。這個函數(shù)打印出一個人養(yǎng)的幾條狗的名字。

          private void printDogNames(String... dogs)

          {

                   System.out.println("I have " + dogs.length + " dogs:");

                   for(String dogname:dogs)

                   {

                             System.out.println(dogname);

                   }

          }

           

          事實上變長參數(shù)dogs是一個數(shù)組。

          一個函數(shù)的參數(shù)中只能有一個變長參數(shù),所以類似下面的定義是不合法的:

          private void printDogNames(String... dogs,float... dogage)

           

          如果決定把函數(shù)參數(shù)設(shè)置為可變長度的,你必須想到這樣一種情況,就是調(diào)用的程序很可能會不給你傳任何的參數(shù),這個時候作為參數(shù)的數(shù)組length0,而這在語法上是完全合法的,所以你必須在函數(shù)定義中考慮到這種情況。

           

          posted on 2005-05-22 16:46 閱讀(1409) 評論(0)  編輯  收藏 所屬分類: 編程相關(guān)
          主站蜘蛛池模板: 安宁市| 敦煌市| 望奎县| 井研县| 凤阳县| 洛扎县| 清远市| 平乡县| 盱眙县| 包头市| 铁力市| 都昌县| 叙永县| 丹寨县| 达孜县| 巫山县| 嘉荫县| 贵德县| 天水市| 疏附县| 佛山市| 永安市| 南通市| 白玉县| 深州市| 辰溪县| 家居| 濉溪县| 荔波县| 高尔夫| 嘉兴市| 大余县| 尉氏县| 平远县| 长寿区| 祁东县| 南漳县| 陆河县| 青州市| 瑞金市| 抚顺县|