Java基礎——可變參數

.
.

從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。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • http://python.jobbole.com/85231/ 關于專業技能寫完項目接著寫寫一名3年工作經驗的J...
    燕京博士閱讀 7,628評論 1 118
  • 對象的創建與銷毀 Item 1: 使用static工廠方法,而不是構造函數創建對象:僅僅是創建對象的方法,并非Fa...
    孫小磊閱讀 2,031評論 0 3
  • java筆記第一天 == 和 equals ==比較的比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量...
    jmychou閱讀 1,518評論 0 3
  • 一直有寫日記的習慣,總是有很多感慨,從初中寫到高中畢業,六年寫了好幾本日記吧,有時感慨來了,身邊沒有日記本,甚至會...
    明明_如月閱讀 210評論 0 0