淺談Java中的可變參數_java

來源:互聯網
上載者:User

可變參數

可變參數就是一個方法可以接收任意多個參數!例如:fun()、fun(1)、fun(1,1)、fun(1,1,1)。你可能認為這是方法重載,但這不是重載,你想想重載能重載多少個方法,而fun()方法是可以傳遞任何個數的參數,你能重載這麼多個方法嗎?

2.1 定義可變參數方法

public voidfun(int… arr) {}

上面方法fun()的參數類型為int…,其中“…”不是省略符號,而是定義參數類型的方式。參數arr就是可變參數類型。你可以把上面代碼理解為:public void fun(int[] arr)。

public int sum1(int[] arr) {    int sum = 0;    for(int i = 0; i < arr.length; i++) {      sum += arr[i];    }    return sum;  }public int sum2(int... arr) {    int sum = 0;    for(int i = 0; i < arr.length; i++) {      sum += arr[i];    }    return sum;  }

你可能會想,“int[]”和“int…”沒有什麼不同,只是“int…”是一種新的定義數組形參的方式罷了。那麼我應該恭喜你了!沒錯,這麼理解就對了!但要注意,只有在方法的形參中可以使用int…來代替int[]。

2.2 調用帶有可變參數的方法

sum1()和sum2()兩個方法的調用:

sum1(new int[]{1,2,3});sum2(new int[]{1,2,3});

這看起來沒什麼區別!但是對於sum2還有另一種調用方式:

sum2();sum2(1);sum2(1,2);sum2(1,2,3);

這看起來好像是使用任意多個參數來調用sum2()方法,這就是調用帶有可變參數方法的好處了。

2.3 編譯器“二次加工”

編譯器對sum2方法定義的“二次加工”結果為:

public int sum2(int[] arr) {    int sum = 0;    for(int i = 0; i < arr.length; i++) {      sum += arr[i];    }    return sum;  }

即把“int…”修改為“int[]”類型。

編譯器對sum2方法調用的二次載入結果為:

sum2(new int[0]);sum2(new int[] {1});sum2(new int[] {1, 2});sum2(new int[] {1, 2, 3});

結論:可變參數其實就是數群組類型,只不過在調用方法時方便一些,由編譯器幫我們把多個實參放到一個數組中傳遞給形參。

2.4 可變參數方法的限制

l  一個方法最多隻能有一個可變參數;

l  可變參數必須是方法的最後一個參數。

以上就是小編為大家帶來的淺談Java中的可變參數的全部內容了,希望對大家有所協助,多多支援雲棲社區~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.