標籤:
java提供了可變參數的方法,即方法的參數個數可以不確定,用"..."定義。
import java.util.ArrayList;import java.util.List;public class VariableParameter {//求若干個整型數中的最大值 public int getMax(int... items){ //定義可變參數items int max = Integer.MIN_VALUE; //次數為int能表示的最小值,值為-2147483648 for(int item : items){ max = item > max? item : max; //取大值 } return max; }//返回比number大的數的個數 public int getLagerNum(int number,int... items){ //若除了可變長參數還有其它參數,可變長參數一定要放在最後 int sum = 0; for(int item : items){ if(item > number){ sum++; } } return sum; } public static void main(String[] args) {VariableParameter vp = new VariableParameter();System.out.println("最大值:"+vp.getMax()); //可以不寫參數System.out.println("最大值:"+vp.getMax(2,1,4,7,2,-1,3,3)); //可以在參數中直接寫入若干個參數System.out.println("最大值:"+vp.getMax(-1,4,5,0,1)); //可以在參數中直接寫入若干個參數 System.out.println("比number大的數的個數:"+vp.getLagerNum(9, 1,11,5,14,-1,9,21)); //9為number,後邊的是items int a[] = new int[] {1,11,5,14,-1,9,21}; System.out.println("比number大的數的個數:"+vp.getLagerNum(9,a)); //items也可以用數組替代 }}運行結果如下:
最大值:-2147483648最大值:7最大值:5比number大的數的個數:3比number大的數的個數:3
從上面代碼可以看出:
1.在方法中定義可變參數後,我們可以像運算元組一樣操作該參數;
2.如果該方法除了可變參數還有其它的參數,可變參數必須放到最後;
3.調用使用了可變參數的方法時:
a.可以不寫參數,即傳入空參;
b.可以直接在裡邊寫入參數,參數間用逗號隔開;
c.可以傳入一個數組;
繼續往下看:
public class VariableParameter { public void comp(int... items){ System.out.println("1"); } public void comp(int item1,int item2){ System.out.println("2"); } public static void main(String[] args) {VariableParameter vp = new VariableParameter();vp.comp(1, 2);}}運行結果:
2
由此可以看出:
4.擁有可變參數的方法可以被重載,在被調用時,如果能匹配到參數定長的方法則優先調用參數定長的方法。
繼續:
public class VariableParameter { public void comp(int... items){ System.out.println("1"); } public void comp(int[] items){ //會報錯:Duplicate method comp(int[]) in type VariableParameter System.out.println("2"); } public static void main(String[] args) {}}
當試圖使用數組作為參數去實現重載時,會報錯,說明可變參數與數組衝突,但是:
public class VariableParameter { public void comp(int[] items){ //會報錯:Duplicate method comp(int[]) in type VariableParameter System.out.println("2"); } public static void main(String[] args) {VariableParameter vp = new VariableParameter();vp.comp(1,2,3,4); //The method comp(int[]) in the type VariableParameter is not applicable for the arguments (int, int, int, int)}}如果定義一個參數為數組的方法,像調用可變參數的方法一樣調用它是會報錯,說明可變參數並不是一個數組,由此我們可以總結出:
5:可變參數可以相容數組參數,但數組參數無法相容可變參數。
鞏固java(六)----java中可變參數方法(非常實用哦)