Java中的可變引數

2021-06-29 06:40:33 字數 1421 閱讀 6552

可變引數

可變引數就是乙個方法可以接收任意多個引數!例如: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

intsum1(intarr)

returnsum;

}public

intsum2(int... arr)

returnsum;

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

2.2 呼叫帶有可變引數的方法

sum1()和sum2()兩個方法的呼叫:

sum1(new int);

sum2(new int);

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

sum2();

sum2(1);

sum2(1,2);

sum2(1,2,3);

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

2.3 編譯器「二次加工」

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

public

intsum2(intarr)

returnsum;

即把「int…」修改為「int」型別。

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

sum2(new

int[0]);

sum2(new

int);

sum2(new

int);

sum2(new

int);

結論:可變引數其實就是陣列型別,只不過在呼叫方法時方便一些,由編譯器幫我們把多個實參放到乙個陣列中傳遞給形參。

2.4 可變引數方法的限制

l  乙個方法最多只能有乙個可變引數;

l  可變引數必須是方法的最後乙個引數。

Java中的可變引數

今天在檢視資料時,看到了這種用法 public static void post final string url,listparams,string header throws exception string header這種引數成為可變引數,是jdk1.5出現的新特性,定義可變引數,我們也可以...

JAVA中的可變引數

好記性不如賴筆頭 package com.ckinghan.equalsdemo public class dymainparam val intsumval integers system.out.println 傳送陣列接收的返回值為 val 描述 可變引數的定義 其實可變引數也就是乙個陣列,接...

JAVA的可變引數

命名方式 public static final 返回值 方法名稱 引數型別 引數名稱 引數型別.引數名稱 例如 public class test system.out.println add new int public static int add int data return result...