資源描述:
《JAVA之變長參數(shù).doc》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、大家還記得前面的教程中,我給大家講解了使用數(shù)組作為形式參數(shù)來構(gòu)造可變長度的參數(shù),那時我告訴大家Java中支持直接的可變長度的參數(shù)的。今天我就給大家講解下Java中可變長度的參數(shù)的語法規(guī)則。在Java中,可變長度的參數(shù)在類型后面加三個點(…)來表示。如:?Java代碼1.static?void?yourMethodInVarargs(int?...?v)?{}??上面的yourMethodInVarargs方法可以使用0個或多個參數(shù)來調(diào)用。這里的v其實是一個int[]數(shù)組,然后在方法內(nèi)部使用v的時候和正常的數(shù)組一樣使用。下面我給大家一個使用可變長度參數(shù)
2、的例子:?Java代碼1.public?class?MainClass?{??2.??//?vaTest()?now?uses?a?vararg.??3.??public?static?void?vaTest(int...?v)?{??4.????System.out.print("Number?of?args:?"?+?v.length?+?"?Contents:?");??5.//Jdk1.5的增強循環(huán)語法就和C#的foreach一樣它在底層是使用的迭代子(Iterator)循環(huán)的方式(數(shù)組除外)支持的是數(shù)組和Collection(包括List和
3、Set等)也存在迭代子循環(huán)在多線程的即時失敗的異常6.7.????for?(int?x?:?v){??8.??????System.out.print(x?+?"?");??9.}??10.????System.out.println();??11.??}??12.??13.??public?static?void?main(String?args[])?{??14.????vaTest(10);?//?1?arg??15.????vaTest(1,?2,?3);?//?3?args??16.????vaTest();?//?no?args??17.
4、??}??18.}??上面的代碼中,我們定義了一個可變長度參數(shù)的方法vaTest,然后在其中,我們先輸出了當前有幾個參數(shù)被傳遞到方法中,然后我們用for循環(huán)將這些參數(shù)的值都輸出到控制臺。下面是它的運行結(jié)果。Numberofargs:1Contents:10Numberofargs:3Contents:123Numberofargs:0Contents:使用可變長度參數(shù)的時候大家需要注意一個問題,如果方法帶有多個參數(shù)的時候,可變長度的參數(shù)一定要放著最后一個參數(shù)的位置,否則報錯。這里我想大家都應(yīng)該可以明白為何要這樣做,因為參數(shù)長度可變,如果將可變長度的參
5、數(shù)放到前面的話,在運行時無法判斷參數(shù)是固定的還是可變的。同時,根據(jù)上述講解,我想大家也能推出一個結(jié)論,可變長度參數(shù)在一個方法內(nèi)只能有一個。為什么呢?因為可變長度的參數(shù)只能是最后一個參數(shù),如果有兩個可變長度的參數(shù)的話,那么就會出現(xiàn)一個可變長度的參數(shù)不是最后一個參數(shù)的情況,這是不允許的。我們前面講過方法的重載,那么是不是帶有可變長度的參數(shù)的方法也可以重載呢?答案是肯定的。下面我就給出一個例子,大家自己看看。?Java代碼1.class?MainClass?{??2.??static?void?vaTest(int...?v)?{??3.????Syste
6、m.out.print("vaTest(int?...):?"?+?"Number?of?args:?"?+?v.length?+?"?Contents:?");??4.????for?(int?x?:?v)??5.??????System.out.print(x?+?"?");??6.??7.????System.out.println();??8.??}??9.??10.??static?void?vaTest(boolean...?v)?{??11.????System.out.print("vaTest(boolean?...)?"?+?"N
7、umber?of?args:?"?+?v.length?+?"?Contents:?");??12.??13.????for?(boolean?x?:?v)??14.??????System.out.print(x?+?"?");??15.??16.????System.out.println();??17.??}??18.??19.??static?void?vaTest(String?msg,?int...?v)?{??20.????System.out.print("vaTest(String,?int?...):?"?+?msg?+?v.le
8、ngth?+?"?Contents:?");??21.??22.????for?(int?x?:?v)??1