Java基礎(三)——形參個數可變的方法
阿新 • • 發佈:2019-01-25
從JDK1.5之後,Java允許定義形參個數可變的引數,從而允許為方法指定數量不確定的形參。如果在定義方法時,在最後一個形參的型別後增加三點(...),則表明該形參可以接受多個引數值,多個引數值被當成陣列傳入。下面程式定義了一個形參個數可變的方法。
package cn.gome.c_object; public class VarargsTest { //======================1.定義形參個數可變的方法====================== public static void testVarargs(int a, String... books) { // book當成陣列處理 for (String book : books) { System.out.println(book); } // 輸出整數變數a的值 System.out.println(a); } // ======================2.採用陣列形參來定義方法====================== public static void testArray(int a, String[] books) { // book當成陣列處理 for (String book : books) { System.out.println(book); } // 輸出整數變數a的值 System.out.println(a); } public static void main(String[] args) { // 採用可變個數形參的方法呼叫 testVarargs(5, "週週", "江江", "霄霄"); // 採用陣列形參的方法呼叫 testArray(2, new String[]{"週週","江江","霄霄"}); } }
執行結果如下:
從上面的執行結果可以看出,當呼叫test()方法時,books引數可以傳入多個字串作為引數值,從test()的方法體程式碼來看,形參個數可變的引數本質就是一個數組引數,也就是說,下面兩個方法簽名的效果完全一樣:
一、方法定義上
1.採用可變個數形參來定義方法
// 定義形參個數可變的方法
public static void testVarargs(int a, String... books)
2.採用陣列形參來定義方法
// 採用陣列形參來定義方法 public static void testArray(int a, String[] books)
二、方法呼叫上
這兩種形式都包含了一個名為books的形參,兩個方法的方法體內都可以把books當成陣列處理,但區別是呼叫兩個方法時存在差差別:
1.採用可變個數形參的方法呼叫
// 採用可變個數形參的方法呼叫
testVarargs(5, "週週", "江江", "霄霄");
2.採用陣列形參的方法呼叫
// 採用陣列形參的方法呼叫
testArray(2, new String[]{"週週","江江","霄霄"});
對比這兩種方法,很顯然第一種形式上更加簡潔。實際上,即使是採用形參個數可變的形式來定義方法,呼叫該方法時也一樣可以為個數可變的形參傳入一個數組。最後,需要注意的地方:
陣列形式的引數可以處於形參列表的任意位置,但是個數可變的形參處於形參列表的最後,也就是說,一個方法中最多隻能有一個個數可變的形參。