1. 可变参数
C和C++是支持函数可变长度参数列表的两种语言。Java决定引入这方面的优势。只在必要时才使用可变参数列表。如果滥用它们,就很容易创建出制造混乱的源代码。C语言在函数声明中使用省略号(…)来代表“任意数量的参数(0个或者多个)”。Java也使用省略号,但是将它同类型和标识符一起使用。这里的类型可以是任意内容,如任意类、任意基本类型,甚至是数组类型。然而,当在一个数组中使用它时,省略号必须出现在类型描述之前和方括号之后。由于可变参数的自然属性,每个方法只能有一个类型作为可变参数,同时它必须出现在参数列表的最后。
下面这个例子中的方法以任意数量的基本整数作为参数,并返回它们的总和:
public int sum(int... intList)
{
int i, sum;
sum=0;
for(i=0; i<intList.length; i++) {
sum += intList[i];
}
return(sum);
}
从被标记为可变的参数位置算起,所有传入的参数都被组合成一个数组。这使得测试传入了多少参数变得简单。需要做的事情就是引用数组的length属性,同时数组还提供对每个参数的便捷访问。
以下是一个对任意数量元素的数组中的所有值求和的完整示例程序:
public class VarArgsExample {
int sumArrays(int[]... intArrays}
{
int sum, i, j;
sum=0;
for(i=0; i<intArrays.length; i++) {
for(j=0; j<intArrays[i].length; j++) {
sum += intArrays[i] [j];
}
}
return(sum);
}
public static void main(String args[])
{
VarArgsExample va = new VarArgsExample();
int sum=0;
sum = va.sumArrays(new int[]{1,2,3},
new int[]{4,5,6},
new int[]{10,16});
System.out.println("The sum of the numbers is: " + sum);
}
}
这段代码跟在已建立的方法之后用来定义和使用一个可变参数。省略号出现在方括号之后(也就是说,在可变参数的类型之后)。在该方法中,参数intArrays只是一个数组的数组。