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
- C技巧:結構體引數轉成不定引數結構體
- Java 隨機數探祕Java隨機
- Ruby方法傳不定引數
- 探祕Java9Java
- Python怎麼傳遞不定引數Python
- python不定長引數如何呼叫函式?Python函式
- 探索JAVA系列(一)探祕Java反射(Reflect)Java反射
- 探祕WKWebViewWebView
- Web列印探祕Web
- Cglib proxy探祕CGLib
- 探祕intern()方法
- systemtap 探祕(三)- 型別、變數和陣列型別變數陣列
- 探祕智慧民航:融雲助力“中國第一國門”數字化轉型記
- 探究kubernetes 探針引數periodSeconds和timeoutSeconds
- python json格式轉url引數&分割, url引數轉json格式PythonJSON
- TaskContinuationsOptions.ExecuteSynchronously探祕
- 深度探祕.NET 5.0
- Java(三)引數Java
- Java對比有引數和無引數Java
- 深入虛幻5引擎:Epic次世代視覺奇觀探祕視覺
- 【NIO系列】——之TCP探祕TCP
- 【高等數學】不定積分
- Spring Boot 引數轉換Spring Boot
- 【Java】可變引數Java
- 深入探討Spring Boot中的引數傳遞Spring Boot
- 三一集團數字化轉型探祕:以DevOps平臺構建敏捷研發體系dev敏捷
- MySQL InnoDB 儲存引擎探祕MySql儲存引擎
- JVM系列(三) - JVM物件探祕JVM物件
- Vue原始碼探祕(七)(createElement)Vue原始碼
- Vue原始碼探祕(九)(createComponent)Vue原始碼
- 探祕 Mach-O 檔案Mac
- PHP現代化框架探祕PHP框架
- 簡單探討Golang中defer預計算引數Golang
- URL引數獲取/轉碼
- APM Java agent 引數配置Java
- [思] 當需要傳遞多個不定引數時,該如何設計 JavaScript 函式?JavaScript函式
- Java方法04:命令列傳遞引數、可變引數Java命令列
- Amazon Corretto技術細節探祕