Java中可变长参数:varargs

  从JDK5开始,java提供了一个新特性,该特性可以简化某种方法的创建,这种方法需要使用数量可变的参数。这个特性称为“varargs”,也就是可变长度参数(variable-length argument)的英文缩写。使用可变长度参数的方法称为可变参数方法(variable-arity method),或者简称为varargs方法。

  可变长度参数通过三个句点(...)标识,例如,下面显示了如何使用可变长度参数编写vaTest()方法:

  static void vaTest(int ... v)

  这种语法告诉编译器,可以使用零个或更多个参数调用vaTest()方法。所以v被隐式地声明为int[]类型的数组。因此在vaTest()方法内部,可以使用常规的数组语法访问v。下面是使用可变长度参数的例子:

class VarArgs{
	void vaTest(int ... v) {
		System.out.print("这个可变数组长度为:"+v.length+" ");
		System.out.print("这个可变数组元素为:");
		for(int x:v)
			System.out.print(x+" ");
		System.out.println("\n");
	}
}
public class Demo {
	public static void main(String[] args) {
		VarArgs var=new VarArgs();
		var.vaTest(10);
		var.vaTest(1,2,3);
		var.vaTest();
	}
}

  该程序运行结果如下:

这个可变数组长度为:1 这个可变数组元素为:10 

这个可变数组长度为:3 这个可变数组元素为:1 2 3 

这个可变数组长度为:0 这个可变数组元素为:
  关于这个程序有重要性的两个点需要注意。首先,在vaTest()方法内部,v是作为数组进行操作的。这是因为v是一个数组。语法“...”只不过是告诉编译器将要使用可变长度参数,并且这些参数将被存储在由v引用的数组中。其次,在main()方法中,使用不同数量的参数调用vaTest()方法,包括根本不使用任何参数,参数被自动放进一个数组中并传递给v.对于没有参数的情况,数组的长度为0.

  使用可变长度参数的方法也可以使用“常规”参数。但是,可变长度参数必须是方法最后声明的参数。如下;

int test(int a,int b,int ... c)
  请记住,可变长度参数必须是最后一个参数。

  另外还有一条限制:只能有一个可变长度参数。例如,下面这个声明是非法的:

int test(int a,int b,int ... c,double ... d)





你可能感兴趣的:(java)