JAVA不定參數探秘

來源:互聯網
上載者:User

JAVA中可以使用不定參數,

例如 public void test(String ...args){...} 這裡test方法可以傳入參數的情況是:

1.不使用參數,如test()

2.使用一個或多個參數,如test("1"); test("1","2");

3.使用數組 test(new String[]{"1","2"});

在test方法內部,我們可以像使用數組的訪問方式一樣來訪問參數args.如:args[i] 這樣就有一個好處,在參數輸入不定的情況下,使用這個方法非常簡單。非常便於使用。

有幾點需要注意的就是  

  我們見到的是不定參數,其實編譯器編譯之後它會將這個test(String ...args){...} 編譯成為數組調用的方式test(String[] args){} ,這個過程是編譯中就完成了的,我們程式編寫過程中看不到這個實際的轉換過程。  而我們調用這個test方法時,編譯器同樣會把參數轉換成new String[]{""}的形式調用,所以,本質上來講,就是一個以數組為參數的調用方法,我們看不到而已,具體詳細情況可以反編譯class類就可以明了。

如果同時同一個類中還有一個test方法,例如test(),或者test(String args) ,我們採用 test("1")的方式調用,我們就可以知道了,因為有這個方法存在,所以編譯器就會優先使用這個 test(String args)    方法,而不會使用不定參數的方法,這個原因很明確,因為不定參數本質上是一個數組為參數的方式。所以,如果你定義了一個不定參數的test方法,如果你再定義一個test(String[] args)的以數組為參數的方法,編譯器就會提示你方法定義重複。道理就在這裡。

  希望以上的解釋能夠協助到大家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.