JAVA不定引數探祕(轉)
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)的以陣列為引數的方法,編譯器就會提示你方法定義重複。道理就在這裡。
相關文章
- Java不定長引數Java
- Java 隨機數探祕Java隨機
- C技巧:結構體引數轉成不定引數結構體
- 不定引數的應用
- iOS可變引數(不定引數)的用法iOS
- java concurrent 探祕Java
- 探祕Java9Java
- Python怎麼傳遞不定引數Python
- 探索JAVA系列(一)探祕Java反射(Reflect)Java反射
- python不定長引數如何呼叫函式?Python函式
- 【字元編碼】Java編碼格式探祕字元Java
- 探祕WKWebViewWebView
- WebSocket探祕Web
- 探祕技術專案管理(三)(轉)專案管理
- 探祕技術專案管理(二)(轉)專案管理
- 探祕技術專案管理(一)(轉)專案管理
- java 使用命令列引數(轉)Java命令列
- Web列印探祕Web
- systemtap 探祕(三)- 型別、變數和陣列型別變數陣列
- 探祕智慧民航:融雲助力“中國第一國門”數字化轉型記
- Cglib proxy探祕CGLib
- Java(三)引數Java
- 核心引數(轉)
- 探祕 vue-rx 2.0Vue
- 【NIO系列】——之TCP探祕TCP
- Java對比有引數和無引數Java
- 深入虛幻5引擎:Epic次世代視覺奇觀探祕視覺
- 【Java】可變引數Java
- Java可變引數Java
- Java 可變引數Java
- Vue原始碼探祕(七)(createElement)Vue原始碼
- MySQL InnoDB 儲存引擎探祕MySql儲存引擎
- JVM系列(三) - JVM物件探祕JVM物件
- PHP現代化框架探祕PHP框架
- 探祕 Mach-O 檔案Mac
- MySQL排序內部原理探祕MySql排序
- 淺談 Laravel 之探祕 SoftDeletesLaraveldelete
- Node8.0 之 Napi 探祕API