.
.
從java5開始出現了可變參數,這是對java方法及數組的拓展!
方法中可以接受的參數不再是固定個數的,而是隨著具體需求傳遞的多少來決定。
一、定義格式
定義格式: 返回值類型 方法名(參數類型 ... 形式參數){ }
二、可變參數的特點
- 1、只能出現在參數列表的最后;
- 2、... 位于變量類型和變量名之間,前后有無空格都可以;
- 3、調用可變參數的方法時,編譯器為該可變參數隱含創建一個數組,在方法體中以數組的形式訪問可變參數。
- 4、如果一個是兩個方法是重載,一個是可變參數,一個是固定參數,然后我們調用方法如果故常長度的能滿足,那么有優先調用故常的長度的,
.
.
三、參考代碼
1、可變參數的基本用法
import java.util.Arrays;
public class TestClass {
public static void main(String[] args) {
show(1,12);
System.out.println("======\n");
int []age = {16,18};
show(age);
}
public static void show(int ...a){//此時這里寫的就是可變參數,和數組的作用一樣!
//把數組給打印出來!
System.out.println("可變參數方法:"+Arrays.toString(a));
}
}
.
輸出
可變參數方法:[1, 12]
======
可變參數方法:[16, 18]
可見,我們往可變參數的方法傳參的時候,可以傳數組,也可以不傳數組,其實還傳數組數就有點多此一舉了。
.
.
.
再來一份參考
import java.util.Arrays;
public class TestClass {
public static void main(String[] args) {
int []third = {11,22,33};
show(1,2,3,69,36,636,459);
showChangeString("吃","飯","去");
showMore(1006, third);
// =====
Person []pers = {new Person(10),new Person(23),new Person(24)};
showPerson(pers);
}
public static void show(int ...a){//此時這里寫的就是可變參數,和數組的作用一樣!
//把數組給打印出來!
System.out.println(Arrays.toString(a));
}
public static void showChangeString(String ...str){//此時這里寫的就是可變參數,和數組的作用一樣!
//把數組給打印出來!
for(String strV:str){
System.out.println("字符串:"+strV);
}
}
public static void showMore(int a,int ...change){//此時這里寫的就是可變參數,和數組的作用一樣!
System.out.println("正常的參數:"+a);
for(int i = 0;i<change.length;i++){
System.out.println("可變參數change 索引"+i+" 對應值: "+change[i] );
}
}
// 可變參數參數類型可以是自定義對象
public static void showPerson(Person ...perChange){//此時這里寫的就是可變參數,和數組的作用一樣!
//把數組給打印出來!
for(Person per:perChange){
System.out.println("可變參數自定義對象數組:"+per.age);
}
}
}
class Person{
int age = 10;
Person(int age){
this.age = age;
}
}
.
打印輸出
[1, 2, 3, 69, 36, 636, 459]
字符串:吃
字符串:飯
字符串:去
正常的參數:1006
可變參數change 索引0 對應值: 11
可變參數change 索引1 對應值: 22
可變參數change 索引2 對應值: 33
可變參數自定義對象數組:10
可變參數自定義對象數組:23
可變參數自定義對象數組:24
.
.
2、如果一個是兩個方法是重載,一個是可變參數,一個是固定參數,然后我們調用方法如果故常長度的能滿足,那么有優先調用故常的長度
import java.util.Arrays;
public class TestClass {
public static void main(String[] args) {
show(1);
}
public static void show(int ...a){//此時這里寫的就是可變參數,和數組的作用一樣!
//把數組給打印出來!
System.out.println("可變參數方法:"+Arrays.toString(a));
}
public static void show(int a){//此時這里寫的就是可變參數,和數組的作用一樣!
//把數組給打印出來!
System.out.println("固定長度 參數方法:"+a);
}
}
.
打印
固定長度 參數方法:1
只打印了一個方法
.
.
.
四、思考
有時候參數個數不確定,那么往往這種時候我們的解決辦法書參數傳一個List,然后去for這個List,其實兩者差不多,而且List的api還要比數組多一些。
但是我們有時就是懶得去構造一個List,或者匿名對象我們也不想new了,那就用可變函數吧。
比如安卓中,我們有一組圖片需要怎么操作,或者有一組控件需要實現點擊事件,我們可以直接傳他們的R.id.xxx。