1. 程式人生 > >Java基礎(三)——形參個數可變的方法

Java基礎(三)——形參個數可變的方法

      從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[]{"週週","江江","霄霄"});
     對比這兩種方法,很顯然第一種形式上更加簡潔。實際上,即使是採用形參個數可變的形式來定義方法,呼叫該方法時也一樣可以為個數可變的形參傳入一個數組。

     最後,需要注意的地方:

     陣列形式的引數可以處於形參列表的任意位置,但是個數可變的形參處於形參列表的最後,也就是說,一個方法中最多隻能有一個個數可變的形參